iOS unit test: проверить, что вызван наблюдатель KVO

У меня есть сценарий тестирования KVO следующим образом:

- (void)testObserverCalled { __block BOOL executed = NO; [[RACObserve(model, dateText) skip:1] subscribeNext:^(id x) { executed = YES; }]; [model setDate:[NSDate date]]; XCTAssertTrue(executed); } 

В настоящее время я использую выполненное значение BOOL, чтобы проверить, вызван ли блок наблюдателя, есть ли лучший способ, например, assert, который должен быть вызван до завершения тестовой функции?

как это:

 XCAssertCalledBeforeFunctionReturn() 

Чтобы я мог изменить свой код на:

 - (void)testObserverCalled { [[RACObserve(model, dateText) skip:1] subscribeNext:^(id x) { XCAssertCalledBeforeFunctionReturn() }]; [model setDate:[NSDate date]]; } 

Вы можете использовать XCTestExpectation . Существует «ручная» версия, где вы указываете ее, когда она выполняется, но для этого случая вы можете использовать встроенный XCTestCase.keyValueObservingExpectation(for:keyPath:handler:) который предназначен именно для вашего сценария.

Основное изменение в вашем желаемом образце кода, как только вы встанете на это ожидание, вам нужно сказать, как долго ждать, прежде чем он waitForExpectations(timeout:handler:) вывод о том, что событие просто не произойдет, заблокировав waitForExpectations(timeout:handler:) после вашего setDate: call.

  • Как сравнить с дополнительными свойствами модели с XCTAssertEqual
  • Запуск XCTests, написанный для фреймворка на устройстве
  • Тест XCTest терпит неудачу, когда тестовый пример «не завершился», когда я NSLog из тестового примера
  • UIAutomation и XCTestCase: как дождаться активации кнопки
  • «Нет такого модуля» при использовании @testable в тестах Xcode Unit
  • XCTestCase, чтобы проверить, вызван ли метод в Struct
  • Как протестировать язык справа налево в модульных тестах iOS XCTest?
  • Xcode Ui-automation - Тест не работает на физическом устройстве
  • Как я могу рассчитать покрытие кода статической библиотеки в XCode 5, используя проект, который ссылается на эту статическую библиотеку?
  • Как удалить все записи в Coredata с сохранением типа хранилища NSInMemoryStoreType. Хотите, чтобы это произошло в XCTest
  • Как я могу выполнить свои тесты производительности более десяти раз?
  • Interesting Posts

    как узнать программно любой файл зашифрован или нет? – iPhone

    Проблема с автозагрузкой iOS с помощью ScrollView

    Как я могу перезапустить SKScene?

    Как преобразовать строку даты типа «2011-01-12T14: 17: 55.043Z» в длинный как 1294841716?

    NSRangeException ', причина:' *** – : индекс 2 за пределами границ ошибка с CoreData и NSFRC

    Передайте дополнительный аргумент для UItapgestureRecognizer с селектором

    iOS: проанализировать URL-адрес в сегментах

    Уникальные элементы из NSMutableArray с элементами NSDictionary?

    Бесшовные возможности входа в facebook для iOS с использованием настраиваемой схемы URL

    Отображать элементы внутри ScrollView на раскадровке

    Как загрузить файл с Parse.com с помощью REST API?

    Получить GPS-местоположение в IOS 8 с помощью XAMARIN

    Реализация AES GCM с аутентификацией Тег в Java

    Изменение цвета текста получателей MFMessageComposeViewController

    Проблема при загрузке изображения профиля на parse.com во время signUpInBackgroundWithBlock

    Давайте будем гением компьютера.