【发布时间】:2021-06-18 14:50:18
【问题描述】:
我正在尝试向我的 dart/flutter 库中添加一些单元测试,而我的被测单元的依赖项之一是抽象类:
abstract class LoginService {
Future<void> login(String username, String password);
}
当我将@GenerateMocks([LoginService]) 添加到我的测试文件并运行build_runner 时,它失败了:
mockito:mockBuilder on test/login_test.dart: Invalid @GenerateMocks annotation: The GenerateMocks "classes" argument is missing, includes an unknown type, or includes an extension
但是如果我手动输入:
class MockLoginService extends Mock implements LoginService {}
没有编译错误。
如果我将 LoginService 更改为不再是 abstract(使用一些虚拟实现),那么模拟成功。
有什么想法吗?我检查了 dart Mockito 的 GitHub 问题,但找不到遇到此问题的人。
【问题讨论】:
-
你有没有继承自
LoginService的具体类(mock类除外)? -
@Abion47 不,现阶段纯粹是抽象的。
-
目前我不在一个可以运行自己的测试的地方,但我的第一个怀疑是,由于您没有任何继承自抽象类的类,因此 Dart 的树-摇晃正在消除它的存在。尝试创建一个具体类,然后看看 mock_builder 是否可以在抽象类上工作。
-
@Abion47 似乎就是这样!创建一个随机的 impl 类后,它就可以工作了。也许您想将其作为“答案”提交,以便我标记它。