Flutter bloc emmitInOrder 不会发出初始状态,但会发出

Posted

技术标签:

【中文标题】Flutter bloc emmitInOrder 不会发出初始状态,但会发出【英文标题】:Flutter bloc emmitInOrder doesn't emit initial state, but it does 【发布时间】:2020-02-21 06:57:25 【问题描述】:

所以我正在尝试对一个 bloc 进行单元测试

我的测试很简单

test("When loading patients, bloc should emmit [Loading], [OwnersLoaded]", ()
      //arrange
      var owners = [Owner(id: "TestId")];
      when (mockPatientsRepository.getOwnersForCurrentPractice()).thenAnswer((_)=>Future.value(owners));
      final List<PatientsState> expected = [patientsBloc.initialState, Loading(), OwnersLoaded(owners)];

      //assert later
      expectLater(patientsBloc, emitsInOrder(expected));

      //act
      useCase.getPatients();
    ); 

所有者确实会覆盖等号和哈希

我的错误信息

Expected: should do the following in order:
          • emit an event that <Instance of 'InitialPatientsState'>
          • emit an event that <Instance of 'Loading'>
          • emit an event that <Instance of 'OwnersLoaded'>
  Actual: <Instance of 'PatientsBloc'>
   Which: emitted • Instance of 'InitialPatientsState'
                  • Instance of 'Loading'
                  • Instance of 'OwnersLoaded'
            which didn't emit an event that <Instance of 'InitialPatientsState'> 

所以它说它发出了初始状态,但没有?

【问题讨论】:

你能把你的块的代码也放上来吗? 你是如何解决这个错误的? @Hunt 如果事件“相等”,则它们不会被重新发出。我已经开始使用冷冻机来获得集团内的价值平等 【参考方案1】:

我们遇到了同样的错误。它已通过使用 equatable 修复。

【讨论】:

欢迎来到 SO。请在您的回答中提供相关细节。不建议使用一行答案。 ***.com/help/how-to-answer

以上是关于Flutter bloc emmitInOrder 不会发出初始状态,但会发出的主要内容,如果未能解决你的问题,请参考以下文章

不在yaml文件flutter中安装包bloc或flutter bloc

Flutter:BLoC 包 - bloc 提供者

Flutter Bloc - Flutter Bloc 状态未更新

Flutter 从其他 Bloc 监听 Bloc 状态

使用 flutter_bloc 库有啥缺点

Flutter BloC 模式:基于另一个 BloC 的流更新 BloC 流