簡體   English   中英

Flutter - 在單元測試中模擬 Future.wait

[英]Flutter - mock Future.wait in unit test

我有一個 function 僅在對FlutterSecureStorage package 進行 4 次同步調用時返回,如下所示。 目的是在FlutterSecureStorage方法的所有 Future 之前不返回。

  @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作為等待時,這是有效的,因為它們什么都不返回,但是我意識到我不知道下一個function要運行,直到在存儲庫class中完成,只是為了確保數據是當我使用關聯的 Json Web 令牌進行 HTTP 調用時設置。 但是現在由於它們與 Future.wait 異步,我如何在測試中模擬它? test_api package有具體的方法嗎?

謝謝,

要等待在測試中調用方法,您可以執行以下操作:

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

注意: untilCalled 方法來自mockito package

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM