2015-05-13 5 views
0

Есть несколько вещей, которые я не получаю, когда я выполнить мои мокко тестовых скриптов:Тест успех с мокко, когда он должен терпеть неудачу

Я тестирование около 20 запросов, а некоторые тесты проходят, когда они не должно. Например, я хочу, чтобы получить страны в Европе, то результат будет следующим:

[ {name:'Germany', 
    code:'de'}, 
    {name:'Spain', 
    code:'es'}, 
...] 


describe('get v2/continents/EU', function() { 
    it('should return the country name', function(done) { 
    options.path = "v2/continents/EU"; 
    http.get(options, function(res) { 
     expect(res.statusCode).to.equal(200); 
     var body = ''; 
     res.on('data', function(chunk) { 
     body += chunk; 
     }); 
     res.on('end', function() { 
     var json = JSON.parse(body); 
     expect(json.result[0].name).to.equal('France'); //This should fail 
     }); 
     done(); 
    }) 
    }) 
}) 

Первая страна, которую я получить в списке Германия, не Франция, но тест все еще проходит, и я понятия не имею, почему, что я делаю неправильно?

ответ

0

Переведите звонок в done(), который находится в конце вашего теста, чтобы он находился внутри вашего обработчика для res.on('end', ...): сразу после вашего звонка expect.

В настоящее время вы говорите Mocha, что тест заканчивается до того, как он заканчивается, но на самом деле вы хотите, чтобы он закончился только после того, как вы получили результаты и протестировали их.

+0

Благодарим вас, даже не обратили на это внимание, это было на самом деле, как вы сказали, заканчивая тест, прежде чем сравнивать ожидаемые результаты из-за асинхронного аспекта – krakig

Смежные вопросы