Тестирование с Qunit и Mockjax
Я пытаюсь выяснить, как правильно протестировать эту функцию javascript, используя qunit и mockjax
Мой javascript настроен по шаблону разоблачающего модуля, я новичок в модульном тестировании, так что это как бы отталкивает меня
my.someMethod = function (someId, completedHandler) {
$.ajax({
dataType: "json",
url: my.someUrl,
traditional: true,
data: {
someId : someId
},
success: function () {
if (completedHandler !== undefined) {
completedHandler();
}
}
});
};
Например, я хочу проверить, используется ли правильный URL-адрес, правильный ли передаваемый идентификатор, убедиться, что вызывается ajax и т. Д.
1 ответ
Решение
Как насчет этого, сам наконец понял.
Структурируйте это как-то так
В вашем методе JavaScript
my.someMethod = function (someId, completedHandler) {
$.ajax({
dataType: "json",
url: my.someUrl,
traditional: true,
data: {
someId : someId
},
success: function (data) {
if (completedHandler !== undefined) {
completedHandler(someId, my.someUrl, data.testResult);
}
}
});
};
Настройте свой макет
$.mockjax({
url: "someActualUrl",
dataType: 'json',
responseText:
{
testResult: 'AJAX Called'
}
});
И в вашем реальном тесте Qunit
test("someMethod calls ajax", function () {
namespace.someMethod("id1",
function (someId, someUrl, someTestResult) {
test("someMethod ajax test", function () {
assert.strictEqual(someId, "id1");
assert.strictEqual(someUrl, "someActualUrl");
assert.strictEqual(someTestResult, "AJAX Called");
});
start();
});
ok(true, "Ajax Called");
});