Package 是 felangelbloc_test 的一个移植版本,修改后可与 StateNotifier 类配合使用

安装

在 pubspec_yaml 中的 dev 依赖项中添加

    dev_dependencies:
        state_notifier_test: [version]

用法

import 'package:state_notifier_test.dart';

stateNotifierTest(
  'CounterNotifier emits [10] when seeded with 9',
  build: () => CounterNotifier(),
  seed: () => 9,
  actions: (stateNotifier) => stateNotifier.increment(),
  expect: () => [10],
);

class CounterStateNotifier extends StateNotifier<int> {
  CounterStateNotifier() : super(0);

  void increment() {
    state = state + 1;
  }
}

stateNotifierTest 也可用于 skip 任何数量的已发出状态
在断言预期状态之前。
skip 默认为 0。

stateNotifierTest(
  'CounterNotifier emits [2] when increment is called twice',
  build: () => CounterNotifier(),
  actions: (stateNotifier) {
    stateNotifier
      ..increment()
      ..increment();
  },
  skip: 1,
  expect: () => [2],
);

stateNotifierTest 也可用于 verify 内部 stateNotifier 功能。

stateNotifierTest(
  'CounterNotifier emits [1] when increment is called',
  build: () => CounterNotifier(),
  actions: (stateNotifier) => stateNotifier.increment(),
  expect: () => [1],
  verify: (_) {
    verify(() => repository.someMethod(any())).called(1);
  }
);

测试选项

setUp 是可选的,应在初始化待测 stateNotifier 之前用于设置
任何依赖项。
setUp 应用于为特定测试用例设置状态。
对于通用设置代码,请优先使用 package:test/test.dart 中的 setUp

build 应构造并返回待测 stateNotifier

seed 是一个可选的 Function,它返回一个状态
该状态将用于在调用 actions 之前初始化 stateNotifier

actions 是一个可选的回调,将使用待测 stateNotifier 调用
并应用于与 stateNotifier 的交互。

skip 是一个可选的 int,可用于跳过任何数量的状态。
skip 默认为 0。

expect 是一个可选的 Function,它返回一个 Matcher,待测 stateNotifier
在执行 actions 后应发出该 Matcher

verify 是一个可选的回调,在 expect 之后调用
并可用于附加的验证/断言。
verify 使用 build 返回的 stateNotifier 调用。

errors 是一个可选的 Function,它返回一个 Matcher,待测 stateNotifier
在执行 actions 后应抛出该 Matcher

tearDown 是可选的,可用于
在测试运行后执行任何代码。
tearDown 应在测试用例运行后进行清理。
对于通用清理代码,请优先使用 package:test/test.dart 中的 tearDown

GitHub

查看 Github