Flutter Mocktail 错误:没有匹配的调用。所有调用:方法(对象实例)

问题描述 投票:0回答:2

我正在尝试验证是否使用我感兴趣的参数调用了我的方法。但是,它似乎仅适用于原始类型。它没有返回我的对象,只是说

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)

flutter dart unit-testing testing mockito
2个回答
1
投票

我也遇到了这个问题,我能够使用 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];
}

0
投票

唷!经过4-5个小时的花费找到了解决方案..

我正在使用具有干净架构的块。下面是对我来说失败的行。

  verify(
    () => authBloc.add(
      Authenticate(
        authenticateUserParams: authParams,
      ),
    ),
  ).called(1);

如果我们观察,那么它取决于以下两件事:

  1. 验证事件
  2. 验证用户参数模型

我在我的身份验证事件中添加了 Equatable

但是,我还没有将 Equatable 添加到我的 AuthenticateUserParams 模型中。

由于这个原因,mocktail 将这两个事件识别为不同的事件。

© www.soinside.com 2019 - 2024. All rights reserved.