AVCaptureVideoPreviewLayer
에 대해 구현 한 탭 - 투 - 포커스 메서드에 대한 테스트를 작성하려고합니다. 다양한 조건을 전달하기 위해 모의 객체 AVCaptureDevice
을 사용하고 실제 포커스를 처리하기 위해 예상되는 메소드가 호출되는지 확인합니다. 아래 코드는 제가 사용하고있는 코드입니다.OCMock으로 AVCaptureDevice 조롱
id deviceMock = [OCMockObject niceMockForClass:[AVCaptureDevice class]];
[[[deviceMock stub] andReturnValue:@YES] hasMediaType:AVMediaTypeVideo];
[(AVCaptureDevice*)[[deviceMock stub] andReturnValue:@(AVCaptureDevicePositionBack)] position];
[[[deviceMock stub] andReturnValue:@YES] isFocusModeSupported:AVCaptureFocusModeContinuousAutoFocus];
[[[deviceMock stub] andReturnValue:@YES] lockForConfiguration:nil];
[[deviceMock expect] setFocusPointOfInterest:CGPointZero];
[[deviceMock expect] setFocusMode:AVCaptureFocusModeAutoFocus];
[[deviceMock expect] unlockForConfiguration];
[self waitForCompletion:0.55]; //Wait for UI animation
[deviceMock verify]
나는 세 가지 테스트를 수행하고 싶습니다
:
- [AVCaptureDevice 장치] 0 장치를 반환하고 아무것도 을 발생
NSArray *devices = [AVCaptureDevice devices];
for (AVCaptureDevice *device in devices)
{
if ([device hasMediaType:AVMediaTypeVideo])
{
if ([device position] == AVCaptureDevicePositionBack)
{
CGPoint point = CGPointMake(focus_y, 1-focus_x);
if ([device isFocusModeSupported:AVCaptureFocusModeContinuousAutoFocus] && [device lockForConfiguration:&error])
{
...
이
는 지금까지이 테스트 코드입니다을 통과 반환 그래서 스텁과 [AVCaptureDevice devices]
클래스 메서드를 반환 할 수있는 쉬운 방법이 내 질문에 귀결 것 같아요? 또는 위의 조건을 통과하는 iPhone/iPad
에 AVCaptureDevice
이 하나만 있다고 가정하는 것이 안전합니까? 그러면 장치를 속성으로 저장하고 내가 작성한 테스트 메서드를 다시 작성할 수 있습니다. AVCaptureDevice
?
무엇에 대해 혼란스러워합니까? 수행하려는 테스트의 의사 코드를 포함시킬 수 있습니까? –
감사합니다. 좀 더 자세한 내용으로 내 질문을 업데이트했습니다. – psobko