Итак, вот сделка: у меня есть один iframe
в mypage.html. Используя jQuery, я смотрю на http://mysite.com/rest/foo
(открытая служба REST) и получаю ответ XML обратно, в котором содержится URL-адрес. Я установил для этого URL атрибут iframe src
.Как я могу тестировать JS, который использует REST API?
Вопрос в том, как я могу его протестировать (используя QUnit и Sinon.js)? Я очень новичок в модульном тестировании в целом, поэтому мне хотелось бы услышать более опытные мнения и примеры.
script.js:
$(document).ready(function() {
function setUrl(url)
{
$('iframe').attr('src', url);
}
function throwError()
{
// Error handling
}
function myCallback(response)
{
var url = $(response).find("url");
if (!url.text()) throwError();
else setUrl(url.text());
}
function bar(restLocation, callback)
{
$.get("http://mysite.com/rest/" + restLocation, callback);
}
bar("foo", myCallback);
});
В частности, я задаюсь вопросом о следующих вещах:
Я предполагаю, что мне нужно, чтобы выставить все эти функции в глобальное пространство имен, чтобы проверить их. Это абсолютно необходимо, или есть способ проверить их, пока он находится в функции
document.ready()
?Какую функцию необходимо проверить?
bar()
действительно делает только одно: сделать вызов AJAX/rest/foo /, а затем позвонитьmyCallback
, а другие - вспомогательные методы (если бы я писал это на Java или C#, они, вероятно, были бы частными) ... я должен проверить их тоже? Конечный пользователь (тот, кто просматривает mypage.html) технически даже не имеет выбора, на какой адрес REST указывать.Я полагаю, некоторые подходящие тестовые случаи могут быть
- Если действительный restLocation передается
bar()
, то IFrame ЦСИ должен быть установлен. - Если недопустимый restLocation передан, необходимо обработать ошибку (в виде загрузки 404 или что-то еще)
- Если сервер не работает, обработайте ошибку.
- Что-нибудь еще?
- Если действительный restLocation передается
К сожалению, если я пытаюсь сделать $('iframe').attr('src')
, он возвращает undefined
. Если я попытаюсь использовать prop()
, я получаю пустую строку. Как я могу проверить, правильно ли установлен src
?
Извините за длинный вопрос. Я просто немного смущен тем, какие тесты делают «хороший» модульный тест, и как можно было бы проверить ситуацию в этой ситуации.
Является ли это на самом деле тестовый модуль, если вы звоните в REST API?Если бы это было что-то еще, я бы выделил код, обрабатывающий результаты вызова REST и код, который фактически вызывает вызов REST; а затем Unit проверит код, обрабатывающий результаты. Есть арендатор модульного тестирования, который кажется применимым: не проверяйте код, который у вас нет. –