Я пишу некоторые математики expect.js, и я бы хотел протестировать самих помощников. Поэтому я хочу написать положительные и отрицательные тесты. Допустим, я написалТестирование расширения на expect.js
toContainItem(name);
используется как этот;
expect(femaleNames).toContainItem('Brad'); // test fails
expect(femaleNames).toContainItem('Angelina'); // test passes
Что я хочу сделать, это написать тест на отрицательный случай, например;
it('should fail if the item is not in the list', function() {
expect(function() {
expect(femaleNames).toContainItem('Brad');
}).toFailTest('Could not find "Brad" in the array');
});
Я не знаю, как запустить мой неисправного тестовый код в среде, где он не провалить содержащий тест. Это возможно?
EDIT: На основании ответа Карл Дэвид Мэнэстер, я придумал с расширением ожидать, что позволяет выше код для работы;
expect.extend({
toFailTest(msg) {
let failed = false;
let actualMessage = "";
try
{
this.actual();
}
catch(ex)
{
actualMessage = ex.message;
failed = true;
}
expect.assert(failed, 'function should have failed exception');
if(msg) {
expect.assert(actualMessage === msg, `failed test: expected "${msg}" but was "${actualMessage}"`);
}
}
});
Thanks Carl - даст ему преимущество! Не знал, что он работал через исключения. –
Carl - спасибо за это. Это ядро решения, которое я придумал, теперь отредактированный обратно в мой вопрос. Все, что я сделал, завершает его, чтобы вы могли написать 'expect (fn) .toFailTest (expectedErrorMessage)' –