2015-01-19 2 views
1

Я тестирую приложение MEAN. Каждый тест просто следит за тем, чтобы я получил правильные коды ответов. В моих маршрутизаторах они успешно возвращают json, используя res.send().Тест Mocha it() только проходит, если нет предшествующего теста

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

Это поведение не является уникальным для этих двух тестов. Прежде чем «он примет лат и долго», есть еще одно испытание. Если я прокомментирую это, принимаю lat и long works. Если я оставлю это, вы принимаете лат и длинные таймы. Что мне нужно сделать, чтобы пройти эти асинхронные тесты?

Я пробовал установить таймаут примерно на 60 секунд, но это тоже не работает.

var assert = require('assert'); 
var server = require('../bin/www'); 
var request = require('supertest'); 

request = request('http://localhost:3000'); 

describe('POST service request', function(){ 
    this.timeout(5000); 
    var postRequest = request.post('/requests.json').type('form'); 

... (other commented out tests) ... 

// it('accepts lat and long', function (done){ 
// postRequest.send({ 
//  service_code: 2000, 
//  long: 400, 
//  lat: 3003 
// }).expect(200, done); 
// }); 


    it('accepts an address id only', function (done){ 
    console.log('22222') 
     postRequest.send({ 
      service_code: 100, 
      address_id: 400 
     }).expect(200, done); 
    }); 
}); 

Вот некоторые авторизовались выход, когда они оба раскомментирована:

Listening on port 3000 
    POST service request 

===REQUEST STARTED=== 

Trying to save a request. 
DB connected. 

Saved. 

POST /requests.json 200 40.368 ms - 49 

    ✓ accepts lat and long (47ms) 

22222 
1) accepts an address id only 


    1 passing (5s) 
    1 failing 

    1) POST service request accepts an address id only: 
    Error: timeout of 5000ms exceeded 
     at null.<anonymous> (/usr/lib/node_modules/mocha/lib/runnable.js:159:19) 
     at Timer.listOnTimeout [as ontimeout] (timers.js:110:15) 


npm ERR! Test failed. See above for more details. 

npm ERR! not ok code 0 

А потом раз вне.

+1

Что такое 'postRequest'? Я не думаю, что вы дали достаточно, чтобы отработать. – loganfsmyth

+0

@loganfsmyth Извините - обновлено. –

ответ

1

Вы не можете повторно использовать одно и то же postRequest между тестами, поскольку send запрос имеет побочные эффекты. Создайте новый запрос в каждом тесте:

it('accepts lat and long', function (done){ 
    request.post('/requests.json').type('form').send({ 
     service_code: 2000, 
     long: 400, 
     lat: 3003 
    }).expect(200, done); 
}); 

it('accepts an address id only', function (done){ 
    request.post('/requests.json').type('form').send({ 
     service_code: 100, 
     address_id: 400 
    }).expect(200, done); 
}); 
+0

Yaaayyyyyy, спасибо! Вот и все. –

+0

Добро пожаловать @helloChris – Paulpro

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