2016-02-28 44 views
1

好吧,我的摩卡測試將通過,如果我註釋'之前'和'後'方法。我相信我的兩個錯誤都是相互關聯的。摩卡'之後'失敗,說它找不到'應用'

'after'方法失敗,說明app.close不是函數。 'before'方法失敗,說它無法在我的第7行(清除服務器緩存)中找到'app'。

我完全沒有選擇或想法。我希望能夠在我的命令下啓動和停止服務器。這是我第一次嘗試在我的摩卡測試中加入任何類型的「之前/之後」方法。下面的工作代碼,但我的失敗部分評論。有什麼建議麼??

var request = require('supertest'); 
var app = require('../../server'); 

describe('server', function() { 
    before(function() { 
     //var app = require('../../server')(); 
     //delete require.cache[require.resolve('app')]; 
    }); 
    after(function() { 
     //app.close(); 
    }); 
    describe('basic comms', function() { 
     it('responds to root route', function testSlash(done) { 
      request(app) 
       .get('/') 
       .expect('Content-type', /json/) 
       //.expect(res.message).to.equal('Hello World!') 
       .expect(200, done); 
     }); 
     it('404 everything else', function testPath(done) { 
      //console.log('testing 404 response'); 
      request(app) 
       .get('/foo/bar') 
       .expect(404, done); 
     }); 
    }); 
}); 

回答

0

before你需要以不同的方式您的應用程序比在第2行爲什麼您不要使用已經要求應用程序?

例子:

before(function() { 
    // here you can use app from line 2 
}); 

關於app.close,你在哪裏找到這個功能呢?

支票直通車文檔: http://expressjs.com/en/4x/api.html#app

要關閉Express服務器,您可以使用此方法:

how to properly close node-express server?

+1

謝謝@Andrei。我用你最後一個鏈接的建議,並使用它。至於在那裏離開第二條線來引用我的服務器,我做到了這一點,這樣我就可以在需要時激活它或將其註釋掉,以測試我的「它」在沒有任何事情出現在我的「之前」或「後'。現在您的建議已被證明非常棒,我已將該行永久移動到我的'之前'。謝謝。 –

相關問題