【问题标题】:Verify a function with argument it called with mockito使用 mockito 调用的参数验证函数
【发布时间】:2021-10-22 18:41:27
【问题描述】:

我有一个测试套件,用于检查当 currentUser 具有 uid 时是否调用了 fireService 方法 (addModelToCollection)。在方法上调用 verify 时,它会抛出一个异常,说明调用的 on 方法是 this

FirestoreServiceMock.addModelToCollection('businesses', 'Business' 实例, {id: uid})

      test('fireStore service should be called', () async {
    // Arange
    final authService = getAuthServiceMock();
    final fireService = getFirestoreServiceMock();
    when(authService.currentUser).thenReturn(UserModel(uid: 'uid'));
    when(fireService.addModelToCollection())
        .thenAnswer((realInvocation) => Future.value('sdfff'));
    final model = RegistraionViewModel();
     
    model.createBusiness({
      'title': "text",
      'description': "text",
    });
    
    verify(fireService.addModelToCollection('businesses', business, id: 'some string'));
  });

错误

No matching calls. All calls: FirestoreServiceMock.addModelToCollection('businesses', Instance 
of 'Business', {id: uid})
(If you called `verify(...).called(0);`, please instead use `verifyNever(...);`.)
package:test_api                                             fail
package:mockito/src/mock.dart 670:7                          _VerifyCall._checkWith
package:mockito/src/mock.dart 986:18                         _makeVerify.<fn>
test\viewModel_test\registration_view_model_test.dart 60:15  main.<fn>.<fn>.<fn>

不熟悉 mockito 和测试,我不确定这里发生了什么,任何帮助;)

【问题讨论】:

    标签: flutter testing mockito


    【解决方案1】:

    您在验证方法中输入的business 是什么?仅基于您上面提供的代码,我的最佳猜测是对象business 和实际方法中使用的对象并不完全相同(散列不同)。而iduid 而不是'Some String' 是因为when(authService.currentUser).thenReturn(UserModel(uid: 'uid'))

    如需进一步澄清/解释,请提供.createBusiness() 方法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-18
      • 2021-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多