假设我有一个这样的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的很好的帖子/教程