【发布时间】: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