【问题标题】:How to test if a method was called in Dart/Flutter + MobX?如何测试是否在 Dart/Flutter + MobX 中调用了方法?
【发布时间】:2020-08-12 19:44:11
【问题描述】:

我在 Flutter 应用中使用 MobX 进行状态管理,我的商店有一个 init() 方法,用于使用启动时所需的所有信息填充状态:

MyStore {
  ...
  bool _initialized = false;
  ...
  void init() {
    if (!_initialized) {
      fetchInfo();
      _initialized = true;
    }
  }
  ...
  @action
  void fetchInfo() { alter observables of store }
}

由于我没有致力于 TDD,我现在可以在实现之后编写单元测试,但我不知道如何测试它,例如init 调用 fetchInfo 并且只运行一次。 如果fetchInfo 在另一个类中,我可以模拟它,但由于它改变了MyStore 的可观察值,我认为它不能被提取。

有没有人知道如何测试或重构它? 谢谢

【问题讨论】:

    标签: unit-testing flutter dart mobx


    【解决方案1】:

    如果使用 fetchInfo 从外部检索数据,则有一种可能进行测试,因为我们可以假设此方法将调用某个存储库。但如果该方法只用于设置数据,则可以在调用后直接在测试中验证数据。

    方法 fetchInfo 似乎是一个私有方法,因此,将标记 _ 设置为它,如果不是这种情况忽略这个,但如果是这种情况,你不应该担心你的单元测试中的私有方法,因为它们是internal 并且不能这样测试,因为它们只关心内部函数

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-19
      • 1970-01-01
      • 1970-01-01
      • 2021-09-06
      • 2020-05-12
      • 2018-03-17
      • 1970-01-01
      相关资源
      最近更新 更多