[英]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.