验证带有参数的函数,该函数使用mockito调用



我有一个测试套装,检查当currentUser有uid时是否调用了fireService方法(addModelToCollection)。当在方法上调用verify时,它抛出一个异常,表示所调用的on方法是this

FirestoreServiceMock。addModelToCollection(' Business', '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>
testviewModel_testregistration_view_model_test.dart 60:15  main.<fn>.<fn>.<fn>

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

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

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

最新更新