【问题标题】:Bloc test with Flutter, wait for async action使用 Flutter 进行 Bloc 测试,等待异步操作
【发布时间】:2022-04-14 16:40:28
【问题描述】:

我的 Flutter 代码中有这个 bloc_test

blocTest<ProjectsBloc, ProjectsState>(
      'emits [ProjectsState.loading(), ProjectsState.succes([])] with empty projects',
      build: () => projectsBloc,
      act: (bloc) => bloc.add(const ProjectsEvent.fetchProjects()),
      wait: const Duration(milliseconds: 2000),
      expect: () => [
        const ProjectsState.loading(),
        const ProjectsState.succes([]),
      ],
    );

如果我不使用等待选项,测试将失败,因为 act 事件需要 1 秒。使用等待我可以确保我们等待足够长的时间,这样测试就可以了。这似乎有点不确定..所以我的问题是,有没有办法删除等待选项并简单地等待直到处理给定的事件?

【问题讨论】:

    标签: flutter async-await bloc-test


    【解决方案1】:

    我遇到了同样的问题,我没有通过 bloc 找到解决方案,但我能够修改我的代码以这种方式定位它并且它允许我的测试通过。

    之前(测试未通过)

    final product = await _addProductUseCase.retrieveProduct(param);
    final photo = await _addProductUseCase.retrieveProductPhoto(param);
    

    之后(测试通过)

    final futures = await Future.wait([
          _addProductUseCase.retrieveProduct(param),
          _addProductUseCase.retrieveProductPhoto(param),
    ]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-09
      • 2019-02-10
      • 2019-07-29
      相关资源
      最近更新 更多