gpt4 book ai didi

flutter - Flutter-在单元测试中模拟Future.wait

转载 作者:行者123 更新时间:2023-12-03 04:51:08 26 4
gpt4 key购买 nike

我有一个仅在对FlutterSecureStorage包进行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时,这是可行的,因为它们什么也不返回,但是后来我意识到在存储库类中完成此操作之前,我不知道要运行的下一个函数,只是为了确保在我使用关联的Json Web token 进行HTTP调用。但是现在,由于它们与Future.wait不同步,我该如何在测试中模拟它? test_api包是否有特定方法?

谢谢,

最佳答案

要等待测试中要调用的方法,您可以执行以下操作:

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

注意:untilCalled方法来自 mockito

关于flutter - Flutter-在单元测试中模拟Future.wait,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61304349/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com