我正在尝试验证是否使用我感兴趣的参数调用了我的方法。但是,它似乎仅适用于原始类型。它没有返回我的对象,只是说
Instance of MyAnswer
。为什么会出现这种情况?
test('Compute answers', () async {
when(myService.submitAnswer(any, any)).thenAnswer((_) async {});
final model = MyModel();
model.submit(); // This calls myService.submitAnswer(MyAnswer(...), 123)).
verify(myService.submitAnswer(MyAnswer(...), 123).called(1);
});
这会抛出
No matching calls. All calls: MyService.submitAnswer(Instance of 'MyAnswer', 123)
。
我也遇到了这个问题,我能够使用 equatable 包解决它。 https://pub.dev/packages/equatable。
让模型类扩展equatable
class MyModel extends Equatable {
final String email;
final String mobile;
MyModel({this.email = "", this.mobile = ""});
@override
List<Object> get props => [email, mobile];
}
唷!经过4-5个小时的花费找到了解决方案..
我正在使用具有干净架构的块。下面是对我来说失败的行。
verify(
() => authBloc.add(
Authenticate(
authenticateUserParams: authParams,
),
),
).called(1);
如果我们观察,那么它取决于以下两件事:
我在我的身份验证事件中添加了 Equatable。
但是,我还没有将 Equatable 添加到我的 AuthenticateUserParams 模型中。
由于这个原因,mocktail 将这两个事件识别为不同的事件。