Tal*_*leb 4 testing mocking mockito flutter url-launcher
我在我的 flutter 项目中使用了url_launcher: ^6.1.0 。我开始为我的小部件编写测试,但是使用url_launcher方法启动 URL 的小部件部分在运行测试时无法正常工作。
我在小部件中使用的方法之一如下所示:
Future<void> _onTapLink(String? href) async {
if (href == null) return;
// canLaunchUrl method never return anything when we are calling this function inside flutter test
if (await canLaunchUrl(Uri.parse(href))) {
await launchUrl(Uri.parse(href));
} else {
print('cannot launch url: $href');
}
}
Run Code Online (Sandbox Code Playgroud)
当我们在 flutter 测试中调用此函数时,canLaunchUrl方法永远不会返回任何内容。
我正在寻找一种方法来模拟url_launcher包以使用内部颤动测试。
要模拟url_launcher你可以:
dev_dependencies中的部分pubspec.yaml。import 'package:mocktail/mocktail.dart';
import 'package:plugin_platform_interface/plugin_platform_interface.dart';
import 'package:url_launcher_platform_interface/url_launcher_platform_interface.dart';
class MockUrlLauncher extends Mock
with MockPlatformInterfaceMixin
implements UrlLauncherPlatform {}
Run Code Online (Sandbox Code Playgroud)
注意这里MockPlatformInterfaceMixin使用了mixin。
MockUrlLauncher setupMockUrlLauncher() {
final mock = MockUrlLauncher();
registerFallbackValue(const LaunchOptions());
when(() => mock.launchUrl(any(), any())).thenAnswer((_) async => true);
return mock;
}
Run Code Online (Sandbox Code Playgroud)
url_launcher通过设置来告诉使用模拟版本UrlLauncherPlatform.instance:final mock = setupMockUrlLauncher();
UrlLauncherPlatform.instance = mock;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2104 次 |
| 最近记录: |