2015-04-30 38 views
0

我正在嘗試設置摩卡來測試ExpressJs應用程序。無法在Express.js上運行Mocha測試應用程序

當我運行使用npm test我得到了以下錯誤測試:

TypeError: undefined is not a function 
at Object.<anonymous> (/myapp/bin/www:11:18) 
at Module._compile (module.js:460:26) 
at Object.Module._extensions..js (module.js:478:10) 
at Module.load (module.js:355:32) 
at Function.Module._load (module.js:310:12) 
at Function.cls_wrapMethod (/Users/nathanzylbersztejn/git/airdesk-api/node_modules/newrelic/lib/shimmer.js:230:38) 
at Module.require (module.js:365:17) 
at require (module.js:384:17) 
at Object.<anonymous> (/Users/nathanzylbersztejn/git/airdesk-api/controllers/session.js:13:11) 
at Module._compile (module.js:460:26) 
at Object.Module._extensions..js (module.js:478:10) 
at Module.load (module.js:355:32) 
at Function.Module._load (module.js:310:12) 
at Function.cls_wrapMethod (/Users/nathanzylbersztejn/git/airdesk-api/node_modules/newrelic/lib/shimmer.js:230:38) 
at Module.require (module.js:365:17) 
at require (module.js:384:17) 
at Object.<anonymous> (/Users/nathanzylbersztejn/git/airdesk-api/app.js:10:25) 
at Module._compile (module.js:460:26) 
at Object.Module._extensions..js (module.js:478:10) 
at Module.load (module.js:355:32) 
at Function.Module._load (module.js:310:12) 
at Module.require (module.js:365:17) 
at require (module.js:384:17) 
at Object.<anonymous> (/Users/nathanzylbersztejn/git/airdesk-api/test/test.js:5:11) 
at Module._compile (module.js:460:26) 
at Object.Module._extensions..js (module.js:478:10) 
at Module.load (module.js:355:32) 
at Function.Module._load (module.js:310:12) 
at Module.require (module.js:365:17) 
at require (module.js:384:17) 
at /Users/nathanzylbersztejn/git/airdesk-api/node_modules/mocha/lib/mocha.js:185:27 
at Array.forEach (native) 
at Mocha.loadFiles (/Users/nathanzylbersztejn/git/airdesk-api/node_modules/mocha/lib/mocha.js:182:14) 
at Mocha.run (/Users/nathanzylbersztejn/git/airdesk-api/node_modules/mocha/lib/mocha.js:394:31) 
at loadAndRun (/Users/nathanzylbersztejn/git/airdesk-api/node_modules/mocha/bin/_mocha:349:22) 
at Object.<anonymous> (/Users/nathanzylbersztejn/git/airdesk-api/node_modules/mocha/bin/_mocha:366:3) 
at Module._compile (module.js:460:26) 
at Object.Module._extensions..js (module.js:478:10) 
at Module.load (module.js:355:32) 
at Function.Module._load (module.js:310:12) 
at Function.Module.runMain (module.js:501:10) 
at startup (node.js:129:16) 
at node.js:814:3 

/myapp/bin/www:11:5指的是以下行:

var app = require('../app') 
app.set('port', process.env.PORT || 3000); // <- this line 
    ^

的應用效果很好,所以它不相關的應用程序建立。 有什麼想法?

+0

當你運行測試時''''console.log(app)'''顯示什麼? – Transcendence

+0

它只顯示'{}' – znat

+0

那麼你的問題是導出應用程序。 '''require('../ app')'''出於某種原因只是返回一個空對象。 – Transcendence

回答

1

第一個猜測是你有一個循環依賴,這個節點通過返回一個空對象來處理,直到圓完成。你是否在app.js內部做過類似require("./bin/www");的活動? 如果您發佈app.jsbin/www我們應該能夠確認。

第二個猜測是app.js只是沒有得到commonjs導出正確。

我也非常確定你應該能夠測試你的快速應用程序,超級加載只需app.js,並且只需在啓動真實服務器實例時使用bin/www即可。

+0

首先猜猜好猜。我印象深刻:)謝謝 – znat

相關問題