如何对Flutter / Dart中是否调用ChangeNotifier的notifyListeners进行单元测试?]

问题描述 投票:0回答:1

我在我们的应用程序中使用provider程序包,我想分别测试我的ChangeNotifier类,以使用简单的单元测试来检查业务逻辑。

除了ChangeNotifier属性的值之外,我还想确保在某些情况下(必要时),已调用[C​​0],否则,依赖于此信息的窗口小部件类不会更新。

目前,我正在间接测试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的值...

unit-testing flutter dart provider
1个回答
0
投票

我遇到了同样的问题。很难测试是否调用了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

© www.soinside.com 2019 - 2024. All rights reserved.