Flutter中提供者的单元测试

普鲁迪维·库玛·帕蒂帕蒂

我们已经以TDD方法启动了关于Flutter的新项目。我正在使用提供程序进行状态管理。在尝试编写Widget测试时,我们面临着测试提供程序的问题。您能否举一个示例来建议编写提供者的单元测试,而小部件注入提供者。

我收到以下问题

══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞════════════════════════════════════
The following ProviderNotFoundException was thrown running a test:
Error: Could not find the correct Provider above this SplashScreen Widget

To fix, please:

Ensure the Provider is an ancestor to this SplashScreen Widget
Provide types to Provider
Provide types to Consumer
Provide types to Provider.of()
Always use package imports. Ex: `import 'package:my_app/my_code.dart';
Ensure the correct context is being used.

══╡启动画面代码╞════════════════════════════════════

import 'dart:async';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../../../routes.dart';
import '../../constants/constants.dart';
import '../../providers/provider.dart';
import '../../services/navigation_service.dart';
import '../../utils/utlis.dart';

class SplashScreen extends StatefulWidget {
@override
SplashScreenState createState() => SplashScreenState();
}

class SplashScreenState extends State {
void startTime() {
const _duration = Duration(seconds: Preferences.splashScreenTime);
Timer(_duration, _getInitialData);
_getInitialData();
}

dynamic _getInitialData() async {
final TokenProvider tokenProvider =
Provider.of(context, listen: false);

await tokenProvider.setAccessToken();

navigationPage();
}

void navigationPage() {
NavigationService.pushReplacementNamedTo(Routes.home_screen);
}

@override
void initState() {
super.initState();
startTime();
}

@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
body: Stack(
key: const Key('splashScreen_body'),
fit: StackFit.expand,
children: [
Image.asset(
'assets/images/flutter.png',
key: const Key('splashScreen_image'),
)
],
),
);
}
}

预先感谢

雷米·罗素(Remi Rousselet)

您需要将要测试的小部件包装在该小部件使用的提供程序中。

因此,您可能需要编写:

await tester.pumpWidget(
  Provider<TokenProvider>(
    child: SplashScreen(),
  ),
);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

对厨师提供者进行单元测试

来自分类Dev

角单元测试中的未知提供者

来自分类Dev

Yii单元测试中的数据提供者

来自分类Dev

Angular 2 - 单元测试 - “没有令牌翻译的提供者”错误

来自分类Dev

我想在多个 Angular 单元测试中重用部分提供者列表

来自分类Dev

Flutter提供者使用

来自分类Dev

业障测试中的未知提供者

来自分类Dev

用于Rails测试的数据提供者

来自分类Dev

Flutter提供者不响应notifyListeners

来自分类Dev

如何在单元测试中使用AutoData在测试参数中提供N个类型的对象?

来自分类Dev

为什么需要测试中的服务提供者(未知提供者)?

来自分类Dev

在单元测试中提交角形

来自分类Dev

如何使Flutter提供程序从工厂提供者notifyListeners()?

来自分类Dev

单元测试忽略并提供解释

来自分类Dev

提供C ++代码的单元测试

来自分类Dev

清除融合的位置提供者的位置以进行测试

来自分类Dev

覆盖TestBed提供者以进行特定测试

来自分类Dev

使用ProviderTestCase2测试内容提供者

来自分类Dev

角度提供者

来自分类Dev

flutter_bloc / provider RepositoryProvider与提供者

来自分类Dev

如何在Flutter中正确重用提供者

来自分类Dev

Flutter提供者未更新变量值

来自分类Dev

如何在ChangeNotifier提供者Flutter中关闭函数

来自分类Dev

Flutter:找不到FutureBuilder上方的提供者

来自分类Dev

Flutter-找不到正确的提供者

来自分类Dev

找不到正确的提供者-Flutter ChangeNotificationProvider

来自分类Dev

Flutter cubit blocprovider无法找到正确的提供者

来自分类Dev

Flutter提供者,有关Dart语法的问题

来自分类Dev

Flutter提供者状态管理,注销概念

Related 相关文章

热门标签

归档