TestHelper
Класс для каждого отдельного тестирования, предоставляющий функции управления, ведения журнала и проверки.
При выполнении каждого модульного теста ему предоставляется TestHelper. Он является значением (val), поэтому его можно передавать между методами и акторами в тесте без ограничений.
Функции проверки проверяют соответствующее условие и помечают тест как неудачный, если это необходимо. Успех или неудача условия сообщается обратно как Bool, что позволяет проверить другую ветвь кода, если это условие не выполнилось.
Все функции assert принимают необязательный аргумент message. Это просто строка, которая выводится как часть сообщения об ошибке, когда условие не выполняется. Она предназначена для облегчения определения причины ошибки.
class val TestHelper
Общедоступные поля
let env: Env val
Среда выполнения процесса.
Это полезно для получения корневого разрешения для доступа к файловой системе (см. files) или сети (см. net) в ваших тестах.
Общедоступные функции
log
Вывести заданное сообщение.
Параметр verbose позволяет выводить сообщения только при использовании командной строки --verbose. Например, по умолчанию ошибки assert записываются в журнал, а успешные проверки — нет. С --verbose в журнал записываются как успешные, так и неудачные проверки.
Журналы выводятся по одному на тест, чтобы избежать переплетения строк журнала от одновременных тестов.
fun box log( msg: String val, verbose: Bool val = false) : None val
Параметры
Возвращаемое значение
- None val
fail
Помечает тест как неудачный.
fun box fail( msg: String val = "Test failed") : None val
Параметры
- msg: String val = "Test failed"
Возвращаемое значение
- None val
assert_true
Проверить, что заданное выражение истинно.
fun box assert_true( actual: Bool val, msg: String val = "", loc: SourceLoc val = __loc) : Bool val
Параметры
Возвращаемое значение
- Bool val
assert_false
Проверить, что заданное выражение ложно.
fun box assert_false( actual: Bool val, msg: String val = "", loc: SourceLoc val = __loc) : Bool val
Параметры
Возвращаемое значение
- Bool val
assert_error
Проверить, что заданная функция тестирования вызывает ошибку при выполнении.
fun box assert_error( test: ITest box, msg: String val = "", loc: SourceLoc val = __loc) : Bool val
Параметры
Возвращаемое значение
- Bool val
assert_no_error
Проверить, что заданная функция тестирования не вызывает ошибку при выполнении.
fun box assert_no_error( test: ITest box, msg: String val = "", loc: SourceLoc val = __loc) : Bool val
Параметры
Возвращаемое значение
- Bool val
assert_is[A: A]
Проверить, что 2 заданных выражения ссылаются на один и тот же экземпляр.
fun box assert_is[A: A]( expect: A, actual: A, msg: String val = "", loc: SourceLoc val = __loc) : Bool val
Параметры
Возвращаемое значение
- Bool val
assert_eq[A: (Equatable[A] #read & Stringable #read)]
Проверить, что 2 заданных выражения равны.
fun box assert_eq[A: (Equatable[A] #read & Stringable #read)]( expect: A, actual: A, msg: String val = "", loc: SourceLoc val = __loc) : Bool val
Параметры
Возвращаемое значение
- Bool val
assert_isnt[A: A]
Проверить, что 2 заданных выражения ссылаются на разные экземпляры.
fun box assert_isnt[A: A]( not_expect: A, actual: A, msg: String val = "", loc: SourceLoc val = __loc) : Bool val
Параметры
Возвращаемое значение
- Bool val
assert_ne[A: (Equatable[A] #read & Stringable #read)]
Проверить, что 2 заданных выражения не равны.
fun box assert_ne[A: (Equatable[A] #read & Stringable #read)]( not_expect: A, actual: A, msg: String val = "", loc: SourceLoc val = __loc) : Bool val
Параметры
Возвращаемое значение
- Bool val
assert_array_eq[A: (Equatable[A] #read & Stringable #read)]
Проверить, что содержимое 2 заданных ReadSeq равны.
Параметр типа этой функции — параметр типа элементов в обоих ReadSeq. Например, при сравнении двух Array[U8], вы должны вызвать этот метод следующим образом:
fun apply(h: TestHelper) => let a: Array[U8] = [1; 2; 3] let b: Array[U8] = [1; 2; 3] h.assert_array_eq[U8](a, b)
fun box assert_array_eq[A: (Equatable[A] #read & Stringable #read)]( expect: ReadSeq[A] box, actual: ReadSeq[A] box, msg: String val = "", loc: SourceLoc val = __loc) : Bool val
Параметры
Возвращаемое значение
- Bool val
assert_array_eq_unordered[A: (Equatable[A] #read & Stringable #read)]
Проверить, что содержимое 2 заданных ReadSeq равны, игнорируя порядок.
Параметр типа этой функции — параметр типа элементов в обоих ReadSeq. Например, при сравнении двух Array[U8], вы должны вызвать этот метод следующим образом:
fun apply(h: TestHelper) => let a: Array[U8] = [1; 2; 3] let b: Array[U8] = [1; 3; 2] h.assert_array_eq_unordered[U8](a, b)
fun box assert_array_eq_unordered[A: (Equatable[A] #read & Stringable #read)]( expect: ReadSeq[A] box, actual: ReadSeq[A] box, msg: String val = "", loc: SourceLoc val = __loc) : Bool val
Параметры
Возвращаемое значение
- Bool val
long_test
Указывает, что это тест с длительным выполнением, который может продолжаться после завершения функции теста. После вызова этой функции необходимо вызвать complete() для завершения теста, если не произойдет истечение времени. Время ожидания задаётся в наносекундах.
fun box long_test( timeout: U64 val) : None val
Параметры
- timeout: U64 val
Возвращаемое значение
- None val
complete
ДОЛЖЕН вызываться для каждого теста с длительным выполнением для указания того, что тест завершён, если не произошло истечение времени.
Параметр success указывает, был ли тест успешным. Однако, если какие-либо проверки assert завершатся неудачей, тест будет считаться неудачным, независимо от значения этого параметра.
После вызова этого метода tear_down() можно вызывать в любое время.
fun box complete( success: Bool val) : None val
Параметры
- success: Bool val
Возвращаемое значение
- None val
expect_action
Может вызываться в тесте с длительным выполнением для задания ожиданий для одного или нескольких действий, которые при их завершении завершат тест.
Этот шаблон полезен в случаях, когда вам нужно выполнить несколько операций для завершения теста, но вы не хотите собирать их все в один актёр, вызывающий метод complete.
Порядок вызовов expect_action не имеет значения — действия могут быть выполнены в любом порядке для завершения теста.
fun box expect_action( name: String val) : None val
Параметры
- name: String val
Возвращаемое значение
- None val
complete_action
ДОЛЖЕН вызываться для каждого ожидания действия, которое было установлено в тесте с длительным выполнением для выполнения ожиданий. Любые ожидания, которые всё ещё ожидаются в момент истечения времени ожидания теста с длительным выполнением, будут выведены в журнал по имени, когда тест завершится неудачей.
Выполнение всех незавершенных действий достаточно для завершения теста. Нет необходимости вызывать метод complete, когда действия завершены.
Вызов метода complete немедленно завершит тест, без ожидания завершения любых незавершенных действий.
fun box complete_action( name: String val) : None val
Параметры
- name: Строка val
Возвращаемое значение
- None val
fail_action
Вызов для провала действия, что также приведет к немедленному провалу всего теста, без ожидания завершения оставшихся действий.
Имя проваленного действия будет включено в вывод об ошибке.
Обычно имя действия должно быть ожидаемым действием, настроенным вызовом expect_action, но провал неожиданных действий также приведет к провалу теста.
fun box fail_action( name: String val) : None val
Параметры
- name: Строка val
Возвращаемое значение
- None val
dispose_when_done
Передайте актор, подлежащий удалению, когда тест будет завершен. Актор будет удален независимо от того, успешен ли тест или провален.
Если тест уже завершается, актор будет удален немедленно.
fun box dispose_when_done( disposable: DisposableActor tag) : None val
Параметры
- disposable: DisposableActor tag
Возвращаемое значение
- None val
© 2016-2020, The Pony Developers
© 2014-2015, Causality Ltd.
Licensed under the BSD 2-Clause License.
https://stdlib.ponylang.io/ponytest-TestHelper