Как издеваться над функцией в мокко? [Дубликат]

Краткий ответ: ваш метод foo() возвращается немедленно, а вызов $ajax() выполняется асинхронно после возврата функции . Проблема заключается в том, как и где сохранить результаты, полученные при вызове async, после его возврата.

В этом потоке было задано несколько решений. Возможно, самый простой способ - передать объект методу foo() и сохранить результаты в члене этого объекта после завершения асинхронного вызова.

function foo(result) {
    $.ajax({
        url: '...',
        success: function(response) {
            result.response = response;   // Store the async result
        }
    });
}

var result = { response: null };   // Object to hold the async result
foo(result);                       // Returns before the async completes

Обратите внимание, что вызов foo() ] все равно не вернут ничего полезного. Однако результат асинхронного вызова теперь будет сохранен в result.response.

14
задан Aperçu 14 July 2015 в 08:40
поделиться

3 ответа

Мокка сама не предоставляет функции mock / stub / spy type. Sinon - популярная библиотека, которая делает. Домашняя страница включает примеры тестирования ajax, а также их Fake XMLHTTPRequest объекта.

16
ответ дан Peter Lyons 25 August 2018 в 03:52
поделиться

Вы можете использовать mocha с supertest , чтобы высмеять запрос. Вот замечательный учебник о том, как это сделать: http://thewayofcode.wordpress.com/2013/04/21/how-to-build-and-test-rest-api-with-nodejs-express- мокко /

1
ответ дан sam100rav 25 August 2018 в 03:52
поделиться

Я нашел Node-Fakeweb полезным

var request = require('request'); 
  // Mocking a client request 
  request.get({ uri: 'URI', body: 'body' }, function (err, resp, body) {
    // Some Action
  });
}); 
4
ответ дан schnatterer 25 August 2018 в 03:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: