Я новый пользователь OCMock, поэтому, возможно, я просто пропустил здесь что-то простое. этот код не компилируется:
id mockSession = [OCMockObject mockForClass:[AVCaptureSession class]];
[[mockSession expect] addOutput:[OCMArg anyPointer]];
ошибка
Multiple methods named 'addOutput:' found with mismatched result, parameter type or attributes
подпись метода addOutput на AVCaptureSession выглядит следующим образом
- (void)addOutput:(AVCaptureOutput *)output
насколько я могу судить, проблема в том, что метод addOutput существует как на классах AVCaptureSession, так и на AVAssetReader. сигнатура метода для addOutput на AVAssetReader выглядит следующим образом.
- (void)addOutput:(AVAssetReaderOutput *)output
По-видимому, компилятор думает, что мой mockSession - это AVAssetReader, но я не знаю, почему он выбирает этот класс вместо AVCaptureSession. если я ожидаю другого метода в AVCaptureSession, которого нет в AVAssetReader, тогда он компилируется. я пробовал следующее без успеха. он компилируется, но сбой.
id mockSession = [OCMockObject mockForClass:[AVCaptureSession class]];
[(AVCaptureSession*)[mockSession expect] addOutput:[OCMArg anyPointer]];
этот код также не компилируется с той же ошибкой, что и предыдущая
id mockSession = [OCMockObject mockForClass:[AVCaptureSession class]];
AVCaptureVideoDataOutput *output = [[AVCaptureVideoDataOutput alloc] init];
[[mockSession expect] addOutput:output];
любое руководство здесь?