2016-02-28 43 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。我用你最后一个链接的建议,并使用它。至于在那里离开第二条线来引用我的服务器,我做到了这一点,这样我就可以在需要时激活它或将其注释掉,以测试我的“它”在没有任何事情出现在我的“之前”或“后'。现在您的建议已被证明非常棒,我已将该行永久移动到我的'之前'。谢谢。 –

相关问题