我在我们的应用程序中使用provider
程序包,我想分别测试我的ChangeNotifier
类,以使用简单的单元测试来检查业务逻辑。
除了ChangeNotifier
属性的值之外,我还想确保在某些情况下(必要时),已调用[C0],否则,依赖于此信息的窗口小部件类不会更新。
目前,我正在间接测试notifyListeners
是否已被调用:我正在使用notifyListeners
让我使用其ChangeNotifier
方法添加回调的事实。在我添加到测试套件中的回调中,我只是增加了一个整数计数器变量并对此进行了断言。
这是测试我的addListener
是否调用其侦听器的正确方法吗?
这里是我正在测试的类(已简化,因此我可以在StackOverflow上共享它:]]
ChangeNotifier
这就是我的测试方式:
import 'package:flutter/foundation.dart'; class ExampleModel extends ChangeNotifier { int _value = 0; int get value => _value; void increment() { _value++; notifyListeners(); } }
此外,如果您认为以不同的方式进行测试会更好,请让我知道,我目前正在团队中担任Flutter的独立开发者,因此很难确定我是否走错了轨道。
我正在我们的应用程序中使用提供程序包,我想单独测试ChangeNotifier类,以进行简单的单元测试来检查业务逻辑。除了ChangeNotifier的值...
我遇到了同样的问题。很难测试是否调用了import 'package:mobile_app/example_model.dart';
import 'package:test/test.dart';
void main() {
group('$ExampleModel', () {
ExampleModel exampleModel;
int listenerCallCount;
setUp(() {
listenerCallCount = 0;
exampleModel = ExampleModel()
..addListener(() {
listenerCallCount += 1;
});
});
test('increments value and calls listeners', () {
exampleModel.increment();
expect(exampleModel.value, 1);
exampleModel.increment();
expect(listenerCallCount, 2);
});
test('unit tests are independent from each other', () {
exampleModel.increment();
expect(exampleModel.value, 1);
exampleModel.increment();
expect(listenerCallCount, 2);
});
});
}
,尤其是对于notifyListeners
函数。因此,我将您的想法与async
一起使用,并将其置于可以使用的一个功能中。
首先您需要一个listenerCallCount
: