scala - scalatest - в конце концов черта побеждает утверждение о неудаче? - PullRequest
1 голос
/ 13 марта 2019

по документации, в конечном итоге черта

Вызывает переданный параметр по имени несколько раз, пока он либо успешно, или настроенное максимальное количество времени прошло, спя настроенный интервал между попытками.

но сбой ,

не может пройти тест безоговорочно;

поэтому я хочу использовать его в конечном итоге, чтобы дождаться получения успешного статуса, но используйте команду fail, чтобы провалить тест, если я уже знаю, что тест должен провалиться

, например

преобразование видео с помощью ffmpeg. Я буду ждать, пока преобразование не будет завершено, но если преобразование достигнет состояния «ошибка», я хочу, чтобы тест не прошел

с этим тестом

  test("eventually fail") {
    eventually (timeout(Span(30, Seconds)), interval(Span(15, Seconds))) {
      println("Waiting... ")
      assert(1==1)
      fail("anyway you must fail")
    }
  } 

я понимаю, что я не могу сделать тест "безоговорочно провалиться" внутри, в конце концов, блокады: похоже, что в конечном итоге будет игнорировать "сбой" до истечения времени ожидания.

enter image description here

это правильное поведение?

1 Ответ

1 голос
/ 13 марта 2019

Таким образом, в самой масштабной документации утверждения сбой не должен «безусловно проверять», а «вызывает исключение»?

Это то же самое, потому что единственный способ провалить тест вСамое масштабное - это выбросить исключение.

Взгляните на источник :

def eventually[T](fun: => T)(implicit config: PatienceConfig): T = {
  val startNanos = System.nanoTime
  def makeAValiantAttempt(): Either[Throwable, T] = {
    try {
      Right(fun)
    }
    catch {
      case tpe: TestPendingException => throw tpe
      case e: Throwable if !anExceptionThatShouldCauseAnAbort(e) => Left(e)
    }
  }
  ...

Так что, если вы хотите справиться со своей неудачей, вы можете использовать pending вместо fail (но, конечно, тест будет объявлен как ожидающий, а не проваленный).Или напишите свою собственную версию eventually, которая допускает больше исключений.

...