首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将flutter代码迁移到null-safety后,mock对象不接受`any`

将flutter代码迁移到null-safety后,mock对象不接受`any`
EN

Stack Overflow用户
提问于 2021-03-11 20:40:45
回答 3查看 3.5K关注 0票数 16

在Flutter 2发布后,我已经将我的代码迁移到了sdk: '>=2.12.0 <3.0.0',现在所有的代码都是“声音零安全”。但是我在使用mockito 5.0.0进行单元测试时遇到了错误

例如:

代码语言:javascript
复制
when(mockClient.login(any)).thenThrow(GrpcError.unavailable());

之前是可以的,但是现在,编译器在any下显示了一个错误,表示:The argument type 'Null' can't be assigned to the parameter type 'LoginRequest'

我从mockito repo中读到了this link,但我希望有一种更简单的方法来为带有“不可空”参数的方法编写测试,就像以前一样。

EN

回答 3

Stack Overflow用户

发布于 2021-05-01 01:46:24

查看the solution here.,你可以使用mocktail包,这使它变得更容易。

使用mocktail,您的代码将变成

代码语言:javascript
复制
when(() => mockClient.login(any())).thenThrow(GrpcError.unavailable());
票数 6
EN

Stack Overflow用户

发布于 2021-07-16 01:40:36

当分配模拟对象时,它需要是模拟对象类型,而不是BaseClass。

代码语言:javascript
复制
@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
    ...
}

来源:https://github.com/dart-lang/mockito/issues/364

票数 5
EN

Stack Overflow用户

发布于 2021-03-11 20:48:06

any返回null,不允许将null值传递给您的login方法。

这是NNBD的主要缺点,模仿比以前更不容易了。

https://github.com/dart-lang/mockito/blob/master/NULL_SAFETY_README.md#problems-with-typical-mocking-and-stubbing

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66582801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档