Как я могу использовать NSPredicate для оценки логических выражений в асинхронном тесте?IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу использовать NSPredicate для оценки логических выражений в асинхронном тесте?

Сообщение Anonymous »


Я создаю последовательный секвенсор задач, который сможет синхронизировать доставку нескольких объектов в сеть.

Любой поток в приложении может отправлять задачи в секвенсор, поэтому я хочу синхронизировать доставку в секвенсор. По этой причине я сделал секвенсор актером и добавил к нему функцию, которая будет добавлять объекты в очередь в секвенсоре.

Я начал использовать TDD для его создания, но застрял еще до того, как начал.

Мой первый подход заключался в создании теста, который ждал бы остановки выполнения секвенсора, а затем потом проверял бы состояние имитируемого сетевого интерфейса. По этой причине я добавил в секвенсор свойство, которое сообщает мне, работает ли он еще.

Этот тест асинхронно добавит объект в секвенсор, а затем я подожду, пока это будет сделано.

Это код секвенсора:

финальный класс DefaultSequencer: Sequencer { пусть isFinished: Bool = true func AppendObjects (_ объекты: [String]) асинхронный { // TODO: это добавит в очередь и начнет обработку. } } А это код теста:

финальный класс DefaultSequencerTests: XCTestCase { частная переменная sut: DefaultSequencer! переопределить функцию setUp() { sut = DefaultSequencer() } переопределить функцию TearDown() { сут = ноль } func test_appendObjects_ShouldFinish() асинхронный бросок { // Данный пусть объекты = ["1", "2"] // Когда ждут sut.appendTasks(объекты) // Затем пусть предикат = NSPredicate { _, _ в self.sut.isFinished == true } пусть ожидание = XCTNSPredicateExpectation (предикат: предикат, объект: ноль) ожидайте выполнения (из: [ожидание], тайм-аут: 20) // ожидание(для: [ожидание], таймаут: 20) } } Этот тест должен пройти успешно, поскольку по умолчанию для свойства isFinished установлено значение true.

Если я использую метод выполнение, этот тест не пройдет. Однако если я использую метод wait(for:), он пройдет, но отобразится предупреждение о том, что мне не следует использовать этот метод в асинхронной области.

Я делаю это неправильно? Я что-то пропустил? Любая помощь будет оценена по достоинству.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • NSPredicate в Java
    Anonymous » » в форуме Android
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Nspredicate, чтобы получить максимальное значение имущества в соответствии с данным значением
    Anonymous » » в форуме IOS
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Полезно ли в C# применять теорему ДеМоргана для ручной оптимизации логических выражений в условных операторах (например,
    Anonymous » » в форуме C#
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Существует ли более элегантный синтаксис для этих логических выражений?
    Anonymous » » в форуме C++
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Использование Pydantic для определения AST логических выражений
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous

Вернуться в «IOS»