Нет совпадающих вызовов с проверкой Mockito, несмотря на совпадения вызовов
У меня есть провайдер по имениSqliteFavoriteProvider
и у него есть метод с именемadd
, это так, как показано:
@override
Future<int> add({
required int startStationId,
required int endStationId,
int? dayId,
}) async {
// `_database` here will be mocked
return await _database.insert('favorites', {
'startStationId': startStationId,
'endStationId': endStationId,
'dayId': dayId,
'lastUpdate': clock.now().toIso8601String(),
});
}
Я издеваюсь над ним, используя , и тестирую его следующим образом:
late FavoriteProvider provider;
late Database mockDb;
setupAll(() {
mockDb = MockDatabase();
// `mockDb` injected into SqliteFavoriteProvider
provider = SqliteFavoriteProvider(database: mockDb);
});
// ...
test('-- add (no day)', () {
withClock(Clock.fixed(DateTime(2023)), () {
provider.add(startStationId: 1, endStationId: 1);
});
verify(
mockDb.insert(
'favorites',
{
'startStationId': 1,
'endStationId': 1,
'dayId': null,
'lastUpdate': '2023-01-01T00:00:00.0',
},
nullColumnHack: null, // doesn't work even if this is absent
conflictAlgorithm: null, // doesn't work even if this absent
),
);
});
mockDb
являетсяMockDatabase
экземпляр, созданныйmockito
.
Проблема в том, что тест не дает результатов:
No matching calls. All calls: MockDatabase.insert('favorites', {startStationId: 1, endStationId: 1, dayId: null, lastUpdate: 2023-01-01T00:00:00.000}, {nullColumnHack: null, conflictAlgorithm: null})
(If you called `verify(...).called(0);`, please instead use `verifyNever(...);`.)
Однако я называю это с точными параметрами. Есть ли что-то, что мне не хватает?
1 ответ
Вы можете проверить это, используя вызываемый метод следующим образом.
verify(
mockDb.insert(
'favorites',
{
'startStationId': 1,
'endStationId': 1,
'dayId': null,
'lastUpdate': '2023-01-01T00:00:00.0',
},
nullColumnHack: null, // doesn't work even if this is absent
conflictAlgorithm: null, // doesn't work even if this absent
),
).called(1);