Параметр сопоставления OCHamcrest несовместим с макетом Mockito при проверке
В следующем модульном тесте я использую Mockito для имитации NSUserDefaults, но когда я пытаюсь проверить с помощью средства сравнения OCHamcrest, чтобы проверить, что параметр является экземпляром NSDictionary, я получаю предупреждение:
Отправка 'id{HCMatcher}' параметру несовместимого типа 'NSDictionary *'
NSUserDefaults *userDefaultsMock = mockClass([NSUserDefaults class]);
//OR -- NSUserDefaults *userDefaultsMock = mock([[NSUserDefaults standardUserDefaults]class]);
Engineer *sut = [[Engineer alloc]init];
[given([userDefaultsMock stringForKey:@"engineerId"]) willReturn:@"02345"];
BOOL result = [sut setCurrentEngineerId:@"02345" userDefaults:userDefaultsMock];
[verify(userDefaultsMock) registerDefaults:instanceOf([NSDictionary class])];
Спасибо
1 ответ
Решение
Как говорится в документации: "Типизированные аргументы выдадут предупреждение о том, что сопоставитель имеет неверный тип. Просто приведите сопоставитель к идентификатору".
В твоем случае,
[verify(userDefaultsMock) registerDefaults:(id)instanceOf([NSDictionary class])];