如何为setState方法创建单元测试?这当然是一个微不足道的例子,但我会有更复杂的例子。我只需要把我的大部分业务逻辑都用在dart里。
class TodoItem {
final String id;
TodoItem({required this.id});
}
@riverpod
class TodoItems extends _$TodoItems {
@override
List<TodoItem> build() => [];
void setState(List<TodoItem> newState) => state = newState;
}
字符串
1条答案
按热度按时间mwkjh3gx1#
最简单的方法在Riverpod文档中描述。创建一个ProviderContainer,然后在该容器上使用read和listen方法模拟ref.read和ref.watch/listen。例如,可以使用类似
container.read(todoItemsProvider.notifier).setState('thing')
的东西,然后检查container.read(todoItemsProvider)
是否为thing
。您还可以添加侦听以确保它正在通知。如果您的提供程序依赖于其他提供程序,您可以通过在ProviderContainer构造函数中使用重写来隔离它们以模拟依赖项。因此,您可以根据需要测试尽可能少或尽可能多的提供商网络。
编辑
最简单的例子(保持单个测试干净)
字符串