2014-10-06 46 views
0

這裏是我的測試文件:節點/ Express.js摩卡設置不工作

var request = require('superagent'), 
    expect = require('expect'), 
    sinon = require('sinon'), 
    app = require("../../../../app"); 

request = request(app); 

describe("HealthCheck", function() { 

    describe("/health_check", function() { 
     it("should return a 200 status", function (done) { 
      request 
      .get("http://localhost:3000/health_check") 
      .end(function(err, res) { 
       expect(res).to.exist; 
       expect(res.status).to.equal(200); 
       expect(res.body).to.contain('OK'); 

       return done(); 
      }); 
     }); 
    }); 
}) 

我一直運行到該錯誤是

1) HealthCheck /health_check should return a 200 status: 
    TypeError: Cannot call method 'end' of undefined 

不能找出我做錯了

這裏是我的app.js:

require('coffee-script/register'); 

var express = require('express'), 
    config = require('./config/config'), 
    fs = require('fs'); 

var app = express(); 

require('./config/express')(app, config); 

app.listen(config.port); 

exports.app = app; 
+0

看起來像有可能是一些與您的應用程序...你可以張貼的內容是在應用程序? – Alex 2014-10-06 20:42:24

+0

@Alex - 我更新了我的問題 – dennismonsewicz 2014-10-06 20:46:08

+0

hmm .. exports.app =應用程序 - 我認爲也許這個問題 - 在你的測試中,你有request = request(app);嘗試將其更改爲request = request(app.app); – Alex 2014-10-06 20:49:33

回答

1

你出口的應用,因爲app
因此,當您require模塊,你需要require要導出的函數的名稱 - 在這種情況下,「應用」

所以,你可以改變你的測試

var request = require('superagent'), 
    expect = require('expect'), 
    sinon = require('sinon'), 
    app = require("../../../../app"); 

request = request(app.app); 

或更改app.js到出口的單一功能:

變化

exports.app = app; 

module.exports = app; 

有一個很好的文章在這個位置:http://openmymind.net/2012/2/3/Node-Require-and-Exports/

+0

哈哈,當你回答這個問題時,我一定會發布我的工作代碼!謝謝!我會接受你的回答 – dennismonsewicz 2014-10-06 20:58:38

+0

沒問題,很高興幫助:) – Alex 2014-10-06 20:59:11