[英]OCMockito - Verify order of method invocations
據我所知,沒有辦法驗證模擬中方法調用的順序。
還是我錯過了什么?
- (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
我想我找到了解決方案。
它基於此請求中添加的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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.