OCMockito - проверка порядка вызовов методов
Насколько я вижу, нет способа проверить порядок вызовов методов на макете.
Или я что-то упустил?
- (void)testResetCameraState_resetsCameraView
{
// Arrange
[given([_cameraManagerMock previewLayer]) willReturn:_testLayer];
// Act
[_cameraInteractor resetCameraState];
// Assert
[verifyCount(_cameraViewMock, times(1)) resetPreview];
[verifyCount(_cameraViewMock, times(1)) setPreviewLayer:_testLayer];
}
В этом случае вы не можете проверить, что setPreviewLayer:
называется после resetPreview
,
1 ответ
Я думаю, что нашел решение.
Это основано на givenVoid
метод, добавленный в этот запрос извлечения: https://github.com/jonreid/OCMockito/pull/93
К сожалению, он еще не объединен, поэтому вам нужно загрузить и собрать эту версию самостоятельно: https://github.com/lysannschlegel/OCMockito/tree/given_void
С помощью нового метода вы можете проверить порядок вызовов методов следующим образом:
- (void)testResetCameraState_resetsCameraView
{
// Arrange
[given([_cameraManagerMock previewLayer]) willReturn:_testLayer];
[givenVoid([self->_cameraViewMock resetPreview]) willDo:^id (NSInvocation *invocation)
{
[(MKTBaseMockObject*)self->_cameraViewMock reset];
return nil;
}];
// Act
[_cameraInteractor resetCameraState];
// Assert
[verifyCount(_cameraViewMock, never()) resetPreview];
[verifyCount(_cameraViewMock, times(1)) setPreviewLayer:_testLayer];
}
Это сбросит макет после первого вызова resetPreview
,
Таким образом, мы можем проверить вещи после этого вызова:
resetPreview
никогда не вызывается после первого звонка.setPreviewLayer
вызывается после resetPreview.
reset
вызов также сбрасывает givenVoid() willDo:
так секунда reset
вызов не сбросит макет снова.
Надеюсь, это поможет, счастливое кодирование:D