У меня есть функция JavaScript с "document.write" в ней, как показано ниже:
function sampleFunction(){
document.write('hello world');
}
И для этого написал пример модульного теста в Jasmine, как показано ниже:
describe("testing function", function() {
it("should give output", function() {
expect(sampleFunction()).toBe('hello world');
expect(sampleFunction()).toContain('hello');
});
});
Но когда мы запускаем его с помощью Karma, он открывает веб-страницу, просто напечатайте на ней «привет, мир», и тестовый пример завершится неудачно.
Не могли бы вы подсказать, как правильно написать пример модульного теста для этой функции?
Огромное спасибо!
Модульные тесты обычно лучше всего использовать для тестирования небольших, легко усваиваемых и чисто функциональных фрагментов кода. Гораздо сложнее использовать модульное тестирование для вещей, которые имеют внутреннее состояние, например, счетчик, который увеличивается каждый раз, когда что-то вызывается или которым требуется доступ к внешнему вводу-выводу, например, к записи в документ, какова ваша ситуация.
Для проверки того, был ли документ обновлен правильно, вы можете рассмотреть возможность реализации того, что многие инженеры начали называть «сквозным» тестированием. Этот - достойная статья среднего уровня, которая дает немного больше информации, хотя это не совсем авторитетный источник.
Karma, как вы, возможно, уже заметили, - это инструмент, который позволяет запускать сквозное тестирование в одном или нескольких браузерах. Вы ожидаете, что sampleFunction
вернет значение, но вам следует проверить, что содержимое документа теперь является "hello world"
, а не тем, что было раньше. Вот достойная, хотя и устаревшая статья, объясняющая, как это сделать.