Тестирование с 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");
});
Другие вопросы по тегам