У меня есть код в файле JS, который выглядит так (упрощенно, конечно):
$(function () {
var num;
$.getJSON('./getNumber.php', function (n) {
num = n;
});
$('#id').on('click', function () { alert(num); });
});
Мне нужно написать два модульных теста:
- Убедитесь, что скрипт отправляет запрос
./getNumber.php
на сервер при загрузке страницы. - Убедитесь, что при нажатии
#id
num
получает предупреждение.
Очевидно, мне нужен FakeXmlHTTPRequest и макет функции alert
, возможно, даже шпионить за $.getJSON
. Однако я не уверен, как правильно писать тесты, сохраняя при этом два атома.
Я думаю, что единственный способ сделать это - динамически вводить блок <script>
для каждого теста; но я просто чувствую, что это неправильно. Как правильно? Спасибо.
Изменить: основываясь на комментариях за пределами SO, мне нужно научиться писать тестируемый Javascript вместо того, чтобы пытаться придумать тестовые примеры для чего-то с низкой тестируемостью. Если кто-нибудь может дать мне несколько советов по переписыванию этого кода, он также будет очень признателен.