如何单元测试由提供者创建的类?



假设我有一个这样的Counter类

class Counter extends ChangeNotifier {
int _i = 0;
int get myCounter => _i;

void increment() {
_i++;
notifyListeners();
}
void decrement() {
_i--;
notifyListeners();
}
}

我想为它写一个测试文件,所以我像这样公开它的实例。问题是,在我公开它之后,我如何访问我刚刚创建的类的实例?比如,我通过一个按钮增加了_i的值,我将如何访问由Provider创建的实例来测试它?

我想做同样的事情,但后来我发现这个答案https://stackoverflow.com/a/67704136/8111212

基本上,您可以从小部件获取上下文,然后您可以使用上下文来获取提供者状态

顺便说一句,您应该测试像i这样的公共变量,而不是_i

代码示例:

testWidgets('showDialog', (WidgetTester tester) async {
await tester.pumpWidget(MaterialApp(home: Material(child: Container())));
final BuildContext context = tester.element(find.byType(Scaffold)); // It could  be  final BuildContext context = tester.element(find.byType(Container)) depending on your app
final Counter provider = Provider.of<Counter>(context, listen: false);
expect(provider.i, equals(3));
});

首先在main中初始化Provider。使用

创建Dart文件
ChangeNotifierProvider

在之后,您可以在代码中的任何地方使用该类,通过使用Consumer小部件或使用:

final counter = Provider.of<Counter>(context)

这是一个关于如何使用Provider的很好的帖子/教程

相关内容

最新更新