我怎么能等待测试小部件中的集团执行



>我有以下情况: 屏幕按钮点击 ->集团事件 ->执行请求 ->集团状态 ->导航

我想测试一下,如果我点击按钮,我可以导航..

Future<void> pumpScreen(WidgetTester tester) async {
await tester.pumpWidget(
MultiProvider(
providers: [
Provider<Navigation>(create: (context) => navigation),
Provider<Bloc>(create: (context) => bloc),
],
child: const MaterialApp(
home: Screen(),
),
),
);
await tester.pumpAndSettle();
}
testWidgets('', (tester) async {
mockRepositorySucess();
await pumpScreen(tester);
await tester.tap(find.text('button'));
await tester.pumpAndSettle();

verifyRepositoryCall()
verifyNavigation()
},
);

测试正在达到验证,呼叫尚未完成。我怎样才能等待 testWidgets 中的 bloc 执行?

══╡ 颤振测试框架捕获的异常 ╞══════════════════════════════════════════════════════════ 在运行测试时抛出以下 TestFailure 对象: 没有匹配的调用(实际上,根本没有调用)。 (如果您拨打verify(...).called(0);,请改用verifyNever(...);

当我进行 Bloc 测试并且有一个异步方法时会调用我首先在设置方法中准备答案

late MocGetFoodCategoriesList mockGetFoodCategoriesList;
late FoodCategoriesDetailes foodCategoriesDetailes;
late String categoryName;
setUp(() { 
mockGetFoodCategoriesList = MocGetFoodCategoriesList();
foodCategoriesDetailes = FoodCategoriesDetailes(meals: [
MealDetails(meal: "a", mealThumb: "test", mealId: "1"),
MealDetails(meal: "b", mealThumb: "test", mealId: "2"),
]);
categoryName = "Beef";
sut = HomeBloc(getFoodCategoriesList: mockGetFoodCategoriesList,);
}

然后当集团要求它时,它会是这样的

blocTest<HomeBloc, HomeState>(
'on GetSelectedItemDetailes FoodType.FOOD expect states LoadingHomeState & ListBavaragesHomeState',
build: () {
when(
() => mockGetFoodCategoriesDetailes.call(params: categoryName),
).thenAnswer((invocation) async => right(foodCategoriesDetailes));
sut.selectedFoodType = FoodType.FOOD;
sut.selectedCategory = categoryName;
return sut;
},
act: (block) => block.add(GetSelectedItemDetailesEvent(categoryName: categoryName)),
expect: () => [isA<LoadingHomeState>(), isA<FoodDetailesHomeState>()],
);

在这种情况下,Bloc 将触发名为GetSelectedItemDetailesEvent的事件,以及在成功调用可能是您的 API 调用或使用 Async/await 函数的任何其他内容mockGetFoodCategoriesDetailes后将触发的状态,并在这种情况下检查是否调用了 2 个状态加载和具有结果的状态,并且操作成功。 在这里,我不是在检查结果是否匹配。

相关内容

  • 没有找到相关文章

最新更新