摩卡asynchronoustesting,重用相同的请求

我正在testing一个HTTP服务器。 我希望我可以通过describe() ,而不是仅仅it() ,如下所示:

 var request = require('supertest'); describe('Item', function(done){ request(app).get('/').end(function(req, res){ it('should have one thing', function(){ // Assert on res.body }); it('should have another thing', function(){ // Assert on res.body }); it('should have more things', function(){ // Assert on res.body }); done(); }); }); 

这是行不通的,摩卡从不运行testing。

下面的代码可以工作,但是每次创build一个新的HTTP请求时,我都希望使用相同的代码。

 describe('Item', function(){ it('should have one thing', function(done){ request(app).get('/').end(function(req, res){ // Assert on res.body done(); } }); it('should have another thing', function(done){ request(app).get('/').end(function(req, res){ // Assert on res.body done(); } }); it('should more things', function(done){ request(app).get('/').end(function(req, res){ // Assert on res.body done(); } }); }); 

我怎样才能对相同的响应运行testing?

如果你testing完全相同的请求 – 那么为什么assert分布在多个testing? 恕我直言,有两个select:

  • 要么他们真的属于一个人,然后把所有的东西都变成一个单一的testing,你的问题就没有了。
  • 或者,他们不属于一个人,那么就不要一个一个地处理,而要单独处理,避免产生副作用。 无论如何,你的问题也将消失。

你现在这样做的方式,你可能会有你的testing之间的相互依赖关系,这是 – 恕我直言 – 非常糟糕的testing风格。

只是我2美分。