2015-01-19 2 views
1

MEAN 앱을 테스트 중입니다. 각 테스트는 올바른 응답 코드를 다시 얻고 있는지 확인하는 것입니다. 라우터에서 res.send()를 사용하여 json을 성공적으로 반환하고 있습니다.이전 테스트가없는 경우 Mocha it() 테스트가 통과합니다.

여기에 주어진 두 번째 테스트는 첫 번째 테스트가 주석 처리 된 경우에만 완료됩니다. 첫 번째 테스트에서 주석을 제거하면 첫 번째 테스트는 통과하지만 두 번째 테스트는 중단됩니다.

이 동작은 두 테스트에서 고유하지 않습니다. '위도와 경도를 받아들이 기'전에 다른 테스트가 있습니다. 내가 그걸 언급하면 ​​위도 높거나 긴 작품을 받아 들일 수 있습니다. 내가 안으로 들어가면, 위도와 장시간을 받아 들인다. 이러한 비동기 테스트를 통과하려면 무엇을해야합니까?

나는 타임 아웃을 60 초와 같이 설정하려고 시도했으나 작동하지 않습니다.

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 

을 그리고 다음 번 아웃 :

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); 
    }); 
}); 

는 여기에 몇 가지들은 모두 주석 때 출력을 기록한다.

+1

'postRequest'란 무엇입니까? 네가 일하기에 충분하다고 생각하지 않는다. – loganfsmyth

+0

@loganfsmyth 죄송합니다 - 업데이트되었습니다. –

답변

1

send 요청에 부작용이 있으므로 동일한 postRequest를 다시 사용할 수 없습니다. 각 테스트에서 새 요청을 만듭니다.

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

Yaaayyyyy, 고마워요! 그거였다. –

+0

안녕하세요. @helloChris – Paulpro

관련 문제