Я пишу модульный тест для метода, который запускает окно браузера, когда пользователь нажимает кнопку.
Тест не пройден, поскольку возвращается null
.
При запускепроверить, что окно браузера не открыто.
При использовании приложения оно работает как положено.
Я видел много других SO вопросов, касающихся window.open (), возвращающего ноль или нетделать то, что хотел ОП, но все это связано с тем, чтобы браузер делал определенные вещи.Код, который я тестирую, делает то, что я хочу, когда он используется в веб-приложении, но я не могу написать для него проходной модульный тест.Этот модульный тест является шагом на пути исправления проблемы, возникающей на этапе после запуска этого метода, поэтому я хочу понять, почему этот тест не проходит.
Верхний ответ здесь наводит меня на мысль, что браузер может блокировать новое окно, потому что запрос поступает извне браузера, что приведет к возврату null
.Я отключил блокировку всплывающих окон в Chrome на всякий случай.
Это main.dart:
import 'package:flutter_web/material.dart';
import 'dart:html' as html;
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Minimal, Reproducible Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
);
}
}
class PrintReports extends StatelessWidget {
const PrintReports({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Column(
children: [
RaisedButton(
child: Text(
"Print A Form . . ."
),
color: Colors.blue,
onPressed: () => {
// generate form . . .
// request submission . . .
// launch browser window . . .
},
),
],
);
}
Future launchURL(String download_url)
async {
try {
await html.window.open(download_url, "Get_Submission");
} catch (e) {
print(e);
}
}
}
Это test.dart:
import 'dart:html';
import 'package:flutter_tests/main.dart';
import 'package:test/test.dart';
void main(){
test("_launchURL launches browser at correct URL", () async {
// Arrange: setup the test
PrintReports printReports = PrintReports();
// Act
WindowBase window = await printReports.launchURL("https://someurl.com/download");
// Assert
expect(window, WindowBase);
});
}
Для запуска тестаЯ использую эту команду терминала: pub run test test/print_reports_card_test.dart -p chrome
.
Текущие результаты теста:
00:14 +2 -1: _launchURL launches browser at correct URL [E]
Expected: Type:<WindowBase>
Actual: <null>
[ . . . I can post this redacted output if you think it might be relevant . . . ]
00:14 +2 -1: Some tests failed.