Столкновение имени метода OCMock

Я новый пользователь 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]; 

любое руководство здесь?

2 Solutions collect form web for “Столкновение имени метода OCMock”

В тех случаях, когда ваша переменная является «id», но метод объявляется с разными сигнатурами в разных классах, вы должны помочь компилятору, наведя объект на правильный тип, например

 [((AVCaptureSession *)[mockSession expect]) addOutput:[OCMArg any]]; 

В любом случае, если аргумент является объектом, как кажется в вашем случае, вы должны использовать любой, а не anyPointer . Но вы поняли, что это уже есть. 😉

хорошо, я думаю, он понял это. как я подозревал, это была простая ошибка noob. изменение [OCMArg anyPointer] на [OCMArg any] выполняет следующую работу:

 id mockSession = [OCMockObject mockForClass:[AVCaptureSession class]]; [(AVCaptureSession*)[mockSession expect] addOutput:[OCMArg any]]; 
  • Как проверить, вызван ли метод объекта внутри блока обработчика завершения, используя OCMock?
  • API-интерфейс Keychain Services не работает с errSecNotAvailable в iphonesimulator 6.0
  • Единичное тестирование с использованием фоновых режимов
  • Единичные тесты (Quick / Nimble) - (тестов не найдено)
  • Как бороться с киви? Не удается запустить первые тесты (установлен через Cocoapods)
  • Единичный тест NSOperation?
  • Не удается передать делегата приложения делегату приложения в тестах
  • Тестирование модулей никогда не запускается после установки UI-тестирования Xcode 7
  • Экзамен по тестированию ботов Xcode вышел без завершения
  • RestKit CoreData зависает во время модульного теста
  • Как выполнить модульное тестирование segue в iOS 9
  • Interesting Posts

    Добавление контура / штриха в UITextView

    Реализация ключевого журнала iOS

    Как AirPrint несколько печатающих форматировщиков за один раз?

    как реализовать UITableViewController с несколькими прототипными ячейками программно в быстром

    Настройка стиля UIBarButtonItem «Done» и «Plain» отдельно, используя UIAppearance

    Что такое Swift-эквивалент объявления `typedef SomeClass <SomeProtocol> MyType`?

    Отчет о сбоях с использованием Crashlytics Fabric не работает после обновлений

    Загрузчик приложений (Apple) застрял в «Отправка API-интерфейса в iTunes Connect»

    UITableViewRowAction пользовательский стиль?

    Ошибка AVAudioSession

    Создать случайное число в диапазоне в iOS?

    Ошибки сборки Кордовы IOS (чистый проект)

    Как подклас CALayer использовать в качестве другой маски CALayer?

    «Нет зарегистрированного обработчика ошибки URL-адреса com-google-gidconsent» при голосовании при использовании GIDSignIn

    декодирование строки изображения c – ios base64

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.