Как назвать assert на несколько раз, пока это не правда?
Скажите, что я получил некоторый базовый результат, как показано ниже:
expect(myObject.getValue()).to.equal(5);
И возвращаемое значение из myObject.getValue()
должно быть 5
после того, как несколько кодов работают в каком-то другом месте, так что мне просто нужно позволить value
быть обновленным.
У меня вопрос, каков код для создания такого теста?
2 ответа
Мокко имеет возможность для повторных испытаний. Вы можете просто использовать this.retries(number_of_tries)
в вашем тесте. Как это:
it("something", function () {
this.retries(10);
expect(myObject.getValue()).to.equal(5);
});
Вы также можете использовать его в describe
блокировать, если вы хотите установить количество повторных попыток для всего набора тестов. Обратите внимание, что если вы используете this.retries
, он не может появиться в функции стрелки (() => ...
) потому что функции стрелок позволяют this
оставьте значение, которое оно имело в области, в которой появилась функция стрелки. Вы должны использовать полную функцию (function () ...
).
Для большей точности повторяемой попытки используйте библиотеку retry-assert:
const activeUser = await retry()
.fn(() => getUser(id))
.until(user => expect(user).toHaveProperty('active', true))
Повторная попытка всего теста является слишком грубой при написании функциональных тестов более высокого уровня - например, при тестировании API-интерфейсов, имеющих асинхронные изменения состояния - и не подходит для CucumberJS. Retry Assert работает с любым исполнителем теста и будет выдавать значимые сообщения об ошибках, если ваше повторное утверждение не будет выполнено слишком много раз.
Отказ от ответственности: я автор повторных заявлений.