错误状态:没有从`when()`中调用方法存根
Posted
技术标签:
【中文标题】错误状态:没有从`when()`中调用方法存根【英文标题】:Bad state: No method stub was called from within `when()` 【发布时间】:2021-04-12 18:42:53 【问题描述】:我正在尝试在我的 signInAnonyymous() 函数中测试我的捕获。然而,我不断收到标题中所述的错误。
这是我的 Mocked Auth 类(为简洁而编辑):
class MockFirebaseAuth extends Mock implements FirebaseAuth
final bool signedIn;
final bool isEmployee;
MockFirebaseAuth(this.isEmployee = false, this.signedIn = false);
@override
Future<UserCredential> signInAnonymously() async
return MockUserCredential(isAnonymous: true);
而且,这是我的测试:
group('Sign-In-Anonymously', ()
setUp(()
mockFunctions = MockFirebaseFunctions();
mockAuth = MockFirebaseAuth();
mockCrashltyics = MockCrashlytics();
mockFirestore = MockFirebaseFirestore();
authRemoteService = AuthServiceFirebase(
crashlytics: mockCrashltyics,
firestoreService: mockFirestore,
functions: mockFunctions,
service: mockAuth,
);
authProvider = AuthProvider(authRemoteService);
);
test(
'Should return a null AuthUser and non-null errorMessage on exception thrown',
() async
when(mockAuth.signInAnonymously())
.thenThrow(MockFirebaseAuthException('message', 'code'));
//act
await authProvider.signInAnonymously();
//assert
expect(authProvider.authUser, isNull);
expect(authProvider.errorMessage, isNotNull);
);
);
我已经研究并尝试了很多不同的方法,但仍然无法测试我的捕获量。任何帮助,将不胜感激。提前谢谢你。
【问题讨论】:
【参考方案1】:如果你要使用'when',你不能覆盖模拟中的方法。您需要从“thenAnswer”中提供答案。
【讨论】:
现在错误信息是有道理的。那么,我将如何在 Flutter 中使用 Firestore sdk 测试我的异常捕获? 我不知道你在问什么?我假设 .thenThrow 可以让您测试包装 FireStore 查询的任何 try\catch 子句。 我想通了。泰。以上是关于错误状态:没有从`when()`中调用方法存根的主要内容,如果未能解决你的问题,请参考以下文章
在 Laravel 5.3 项目中使用 PHPUnit 存根类方法调用的问题