2013-07-15 4 views
0

POST 요청 테스트의 콜백이 호출되는 곳을 간단하게 테스트 할 수 있습니다. 서버 로그에서 요청이 만들어진 것을 볼 수는 있지만 멈추는 것처럼 보입니다.재스민 테스트 실패

저는 노드로 작업/테스트를하는 데 매우 익숙하므로 뭔가 간단한 것을 놓치고있는 좋은 기회가 있습니다.

업데이트 : 나는 원래 커피 스크립트를

UPDATE를 추가 한 : 원래 커피 스크립트를 실행하면 파일이 직접 jasmine-node foo/bar/users.spec.coffee --coffee 실행하면 작동하지만 모든 커피 파일 jasmine-node foo/bar --coffee를 실행할 때 실패합니다. 나는의 .js로 .coffee 파일을 변환 (모든 반환에 보관)과 동일한 문제를 보았다 (I 개별적으로 파일을 실행하면 콜백이 실행됩니다,하지만 그들 모두 실행할 때 실패)

# original coffeescript 
assert = require 'assert' 
request = require 'request' 

describe 'User API', -> 

    describe 'Signup', -> 

    url = 'http://localhost:3000/users' 
    params = null 

    beforeEach (done) -> 
     params = 
     url: url 
     form: 
      firstName: 'John' 
      lastName: 'Smith' 
      email:  '[email protected]' 
      password: 'foobar' 
      role:  'member' 
     done() 

    it 'returns a 200 OK on valid user signup', -> 
     request.post params, (err, resp, body) -> 
     console.log "***************" 
     console.log "in the callback" 
     console.log "***************" 
     assert.equal resp.statusCode, '200' 
     done() 


// the converted js 
var assert, request; 

assert = require('assert'); 

request = require('request'); 

describe('User API', function() { 
    return describe('Signup', function() { 
    var params, url; 
    url = 'http://localhost:3000/users'; 
    params = null; 
    beforeEach(function(done) { 
     params = { 
     url: url, 
     form: { 
      firstName: 'John', 
      lastName: 'Smith', 
      email: '[email protected]', 
      password: 'foobar', 
      role: 'member' 
     } 
     }; 
     return done(); 
    }); 
    return it('returns a 200 OK on valid user signup', function() { 
     return request.post(params, function(err, resp, body) { 
     console.log("***************"); 
     console.log("in the callback"); 
     console.log("***************"); 
     assert.equal(resp.statusCode, '200'); 
     return done(); 
     }); 
    }); 
    }); 
}); 

답변

0

내가 할 매개 변수가없는 한이 시험에 전달된다.

# bad 
it 'returns a 200 OK on valid user signup', -> 

# good 
it 'returns a 200 OK on valid user signup', (done) -> 
0

을 거기에는 두 개의 return 문이 있습니다. 첫 번째 함수가 실행 된 후 함수가 반환되므로 코드가 실행되지 않습니다. 당신이 그들을 제거 할 수

:

var request = require('request'); 

describe('User API', function() { 
    describe('Signup', function() { 
     var url = 'http://localhost:3000/users'; 
     var params = null; 

     beforeEach(function() { 
      params = { 
       url: url, 
       form: { 
        firstName: 'John', 
        lastName: 'Smith', 
        email: '[email protected]', 
        password: 'foobar', 
        role: 'member' 
       } 
      }; 
     }); 

     it('returns a 200 OK on valid user signup', function() { 
      return request.post(params, function(err, resp, body) { 
       expect(resp.statusCode).toEqual(200); 
      }); 
     }); 
    }); 
}); 
+0

coffeescript가 제안한 것을 렌더링 할 수 있도록 * it * 명령문 바로 뒤에 return 문을 추가했지만 동일한 결과를 얻었습니다. 원래의 coffeescript를 보여주기 위해 위의 코드를 업데이트했습니다 (추가 반환없이). 아직 코드가 작동하지 않는다고 제안한 코드가 있습니다. https://gist.github.com/chrisolsen/66744e64225d575b2a43 – chris

+0

원래 게시물에서 두 번째 업데이트가 해결되지 않는 이유를 확인하십시오. – chris