0

Перед обменом API я хочу, чтобы клиент (который использует API) с интеграционными тестами, чтобы убедиться, что новый API обеспечивает те же результаты, что и старый, и клиент все еще работает, как ожидалось. Поэтому я написал несколько интеграционных тестов для соответствующих клиентских методов. Эти клиентские методы используют запрос для запроса API.
Я использую mocha для выполнения тестов. В рамках тестов теперь кажется, что запросы не выполняются вообще.Запрос не выполнен во время теста интеграции мокки

Я сделал простой пример, чтобы показать мою проблему:

var request = require('request'); 
var assert = require('chai').assert; 

describe('test', function(){ 
    it('request-test', function(done){ 
     var responseBody; 
     request('http://www.google.com', function (error, response, body) { 
      if (!error && response.statusCode == 200) { 
       console.log(body) 
       responseBody = body;  
      }     
     }); 
     done(); 
     assert.notEqual(responseBody, undefined); 
    }); 
}); 

В этом примере console.log никогда не выполняется, и тест всегда терпит неудачу в утверждении.

ответ

1

Существует проблема с размещением done(). done() используется для тестирования асинхронного кода.

Используйте его в обратном вызове для правильного выполнения тестового примера.

var request = require('request'); 
var assert = require('chai').assert; 

describe('test', function(){ 
    it('request-test', function(done){ 
     var responseBody; 
     request('http://www.google.com', function (error, response, body) { 
      if (!error && response.statusCode == 200) { 
       responseBody = body; 
       assert.notEqual(responseBody, undefined); 
       done(); 
      }     
     }); 
    }); 
}); 
1

Попробуйте поместить свои утверждения и вызов done() внутри обратного вызова.