2013-07-15 291 views
0

我有一個簡單的測試,以調用POST請求測試的回調。從服務器日誌中可以看到正在發出請求,但似乎停止了。茉莉花測試失敗

我對節點的工作/測試很新,所以很遺憾我缺少一些簡單的東西。

更新:我已經添加了原有的CoffeeScript

UPDATE:如果文件是直接jasmine-node foo/bar/users.spec.coffee --coffee運行運行原始CoffeeScript的工作,但運行所有的咖啡文件jasmine-node foo/bar --coffee時失敗。我轉換.coffee文件.js文件(並保持在所有的收益),看到完全相同的問題(如果我單獨運行該文件的回調運行,但是當我運行他們都失敗)

# 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

我在* it *語句後面添加了一個return語句,以允許coffeescript呈現您所建議的內容,但我得到的是同樣的結果。我更新了上面的代碼以顯示原始咖啡文本(沒有額外的返回)。這裏是你的建議仍然不起作用的代碼。 https://gist.github.com/chrisolsen/66744e64225d575b2a43 – chris

+0

請參閱原始帖子中的第二個更新,爲什麼這不能解決問題。 – chris