Как написать модульный тестовый пример для функции JavaScript с «document.write» в нем - PullRequest
0 голосов
/ 30 октября 2018

У меня есть функция JavaScript с «document.write», как показано ниже:

function sampleFunction(){  
document.write('hello world');  
}

И, для этого написал пример модульного теста в Жасмин, как показано ниже:

describe("testing function", function() {    
  it("should give output", function() {     
      expect(sampleFunction()).toBe('hello world');  
      expect(sampleFunction()).toContain('hello');   
  });  
    });

Но когда мы запускаем его с помощью Karma, он открывает веб-страницу, просто печатает на ней 'hello world', и тестовый случай заканчивается неудачей.

Подскажите, пожалуйста, как правильно написать код модульного теста для этой функции.

Большое спасибо!

1 Ответ

0 голосов
/ 30 октября 2018

Модульные тесты, как правило, лучше всего использовать для тестирования небольших, легко усваиваемых и чисто функциональных фрагментов кода. Гораздо сложнее использовать модульное тестирование для вещей, которые имеют внутреннее состояние, такое как счетчик, который увеличивается каждый раз, когда что-то вызывается, или для которого требуется доступ к внешнему вводу-выводу, например, записи в документ, что является вашей ситуацией.

Для проверки правильности обновления документа вы можете рассмотреть возможность реализации того, что многие инженеры начали называть «сквозным» тестированием. Эта - достойная средняя статья, в которой содержится немного больше понимания, хотя на самом деле это не авторитетный источник.

Карма, как вы, возможно, уже заметили, является одним из инструментов, который позволяет запускать сквозное тестирование в одном или нескольких браузерах. Вы ожидаете, что sampleFunction вернет значение, но вам следует проверить, что содержимое документа теперь "hello world" вместо того, что было раньше. Вот достойная, хотя и устаревшая статья, объясняющая, как это сделать.

...