Ego*_*kov 5 flutter riverpod riverpod-generator
我有存储库,并为该存储库生成提供程序,如下所示:
@riverpod
class Repository extends _$Repository {
@override
String? build() {
return null;
}
Future<void> fetchData() async {
state = "Hello World!";
}
}
Run Code Online (Sandbox Code Playgroud)
我想测试我的应用程序。在测试中我想模拟这个存储库的提供者。但我有来自 Riverpod_lint 的消息:Providers which are overridden in a non-root ProviderContainer/ProviderScope should specify dependencies.。
我的测试如下所示:
@riverpod
class MockedRepository extends _$MockedRepository implements Repository {
@override
String? build() {
return null;
}
Future<void> fetchData() async {
state = "Hello Mocked World!";
}
}
void main() {
testWidgets('override repositoryProvider', (tester) async {
await tester.pumpWidget(
ProviderScope(
overrides: [
repositoryProvider.overrideWith(() => MockedRepository()),
],
child: const App(),
),
);
});
}
Run Code Online (Sandbox Code Playgroud)
我找到了一个解决方案:当我在原始Repository 类中添加@Riverpod(dependencies: [])注释而不是@riverpod注释时,riverpod_lint 停止消息传递。但我不明白为什么我应该为了测试目的而纠正我原来的课程。我应该总是描述依赖关系吗?也许有一种方法可以使 ProviderContainer/ProviderScope 在测试中扎根?
| 归档时间: |
|
| 查看次数: |
427 次 |
| 最近记录: |