flutter - 将颤振代码迁移到空安全后,模拟对象不接受“任何”
问题描述
在 Flutter 2 发布后,我已经将我的代码迁移到sdk: '>=2.12.0 <3.0.0'
并且所有代码现在都是“健全的 null 安全”。但是我在使用 mockito 5.0.0 进行单元测试时遇到了错误
例如:
when(mockClient.login(any)).thenThrow(GrpcError.unavailable());
之前还可以,但是现在编译器在 下显示错误any
,表示:
The argument type 'Null' can't be assigned to the parameter type 'LoginRequest'
我从 mockito repo 中阅读了这个链接,但我希望有一种更简单的方法来为具有“不可为空”参数的方法编写测试,就像以前一样。
解决方案
分配 Mock 对象时,它需要是 Mock 对象类型,而不是 BaseClass。
@GenerateMocks(MockSpec<ITransactionRepository>(as: #MockTransactionRepository),
)
void main()
{
....
ITransactionRepository baseObject = MockTransactionRepository(); // wrong
MockTransactionRepository mockObject = MockTransactionRepository(); // right
when(baseObject.method(any)); // results in compile error
when(mockObject.method(any)); // OK
...
}
推荐阅读
- oracle - 使用卷时,将文件从 url 添加到 docker 图像以不同的结果结束
- docker - 如何在 gitlab ci/cd 中不使用“docker build/daemon”命令为 vue.js 应用程序构建 docker 映像?
- python-3.x - 为什么花基本身份验证总是弹出登录表单
- android - 如何删除 TabLayout 工具提示?
- python - 带有附加键的字典理解
- python - PyOpenGL glDeleteBuffers 和 glDeleteVertexArrays 产生错误
- tabs - 添加 Buddypress 选项卡以显示成员(添加朋友选项卡)
- ios - 收到推送通知时,ReactNative 应用程序可能会在后台振动,但本机 iOS 应用程序(Swift)无法在后台振动
- python-3.x - 有没有办法提高 KivyMD MDDatatable 的效率?
- python - 如何确保反应来自用户而不是机器人本人?