下面的代码是我的代码的一个简化示例。我有一个依赖于类B的类A。我想测试类A,所以我模拟了类B。然后我为类A的一个方法编写了一个测试,在这个测试中,我为我模拟的类B中的一个方法被调用时编写了一个存根:
fetchData() async {
try {
await b.getData();
} on DioError catch (e) {
switch (e.response!.statusCode) {
case 401:
logout();
throw UnauthorizedException();
default:
throw UnspecifiedDioException(error: e);
}
}
为fetchData()方法编写的测试:
test('check if fetchData calls logout when 401 is returned', () {
when(mockB.getData())
.thenAnswer((_) async =>
throw DioError(
requestOptions: RequestOptions(path: ""),
response: Response(requestOptions: RequestOptions(path: ""), statusCode: 401)));
verify(a.logout()); // doesn't work because A isn't mocked
});
我读到过你可以很容易地用spies来做这个,但是让我惊讶的是spies可以用在除了dart之外的每一种使用mockito的语言中。它显然是被弃用的,但是如果没有一个更新的版本来替换它,怎么能被弃用呢?
如果有人能告诉我是否有一个方便的解决方案来实现我正在努力实现的目标,我将非常感激。
编辑:我换了一个问题,因为前一个问题没有多大意义。我只是想知道在飞镖中是否有间谍之类的东西。
1条答案
按热度按时间8ehkhllq1#
mocktail
..* 您还应该存根您的logout
调用的依赖关系。你的测试