Как проверить, что mockjax был вызван

У меня есть метод, который при вызове делает HTTP-запрос к серверу и не заботится о том, что произойдет после. Ответ не анализируется и не меняет своего состояния после отправки запроса или получения ответа.

Теперь я хочу протестировать этот метод, и, поскольку нет изменения состояния, я не могу проверить, был ли выполнен HTTP-запрос, путем проверки метода или объекта, которому он принадлежит. Мне как-то нужно прикрепить sinon к $.mockjax так что я могу выполнить утверждение, проверяющее, что HTTP-запрос действительно был сделан.

Как это сделать?

1 ответ

Решение

Вы можете использовать $.mockjax.mockedAjaxCalls() метод для получения массива вызовов, которые перехватил Mockjax. Массив будет содержать requestSettings Объект для каждого запроса, который вы можете проверить при необходимости:

QUnit.test('two calls should be made', function(assert){
    // set up the mock
    $.mockjax({ ... });

    $.ajax({ ... }); // matching ajax call
    $.ajax({ ... }); // NON-matching ajax call
    $.ajax({ ... }); // another matching ajax call

    assert.equal($.mockjax.mockedAjaxCalls().length, 2, 'only two mockjax calls are recorded');
});
Другие вопросы по тегам