【问题标题】:Flutter - mock Future.wait in unit testFlutter - 在单元测试中模拟 Future.wait
【发布时间】:2020-08-01 21:16:28
【问题描述】:

我有一个函数,它仅在对 FlutterSecureStorage 包进行 4 次同步调用时返回,如下所示。目的是直到所有的 Future 从 FlutterSecureStorage 方法返回。

  @override
  Future<void> cacheAuthenticatedUserJWT(authenticateUserModel) async {
    return await Future.wait([
      flutterSecureStorage.write(
          key: CACHED_ACCESS_TOKEN, value: authenticateUserModel.accessToken),
      flutterSecureStorage.write(
          key: CACHED_REFRESH_TOKEN, value: authenticateUserModel.refreshToken),
      flutterSecureStorage.write(
          key: CACHED_EXPIRES_IN,
          value: authenticateUserModel.expiresIn.toString()),
      flutterSecureStorage.write(
          key: CACHED_TOKEN_TYPE, value: authenticateUserModel.tokenType),
    ]);
  }

现在当谈到测试时,我有以下类似的东西:

test('should store of the tokens into flutter secure storage', () async {

      // Mock call of function
      dataSource.cacheAuthenticatedUserJWT(tAuthenticatedUserModel);

      // Verify all four calls have been made
      verify(secureStorage.write(
          key: CACHED_ACCESS_TOKEN,
          value: tAuthenticatedUserModel.accessToken));
      verify(secureStorage.write(
          key: CACHED_REFRESH_TOKEN,
          value: tAuthenticatedUserModel.refreshToken));
      verify(secureStorage.write(
          key: CACHED_EXPIRES_IN,
          value: tAuthenticatedUserModel.expiresIn.toString()));
      verify(secureStorage.write(
          key: CACHED_TOKEN_TYPE, value: tAuthenticatedUserModel.tokenType));
    });

当我没有 flutterSecureStorage.write 作为等待时,这是有效的,因为它们什么都不返回,但是我意识到在存储库类中完成之前我不会运行下一个函数,只是为了确保当我使用关联的 Json Web 令牌进行 HTTP 调用时设置数据。但是现在由于它们与 Future.wait 异步,我如何在测试中模拟它? test_api包有具体的方法吗?

谢谢,

【问题讨论】:

    标签: flutter dart future flutter-test


    【解决方案1】:

    要等待一个方法在测试中被调用,你可以这样做:

     await untilCalled(myMockClass.myAsyncFunction());
     verify(myMockClass.myAsyncFunction());
    

    注意: untilCalled 方法来自 mockito

    【讨论】:

      猜你喜欢
      • 2019-12-13
      • 2017-02-09
      • 2018-11-27
      • 1970-01-01
      • 2015-05-04
      • 2016-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多