使用BusterJS,ExpressJS和SuperTest的问题

时间:2014-01-28 16:12:49

标签: node.js express supertest buster.js

我在使用ExpressJS + BusterJS + SuperTest测试路线时遇到了一些问题。

var app = require("../../app/app.js"),
buster = require("buster"),
expect = buster.referee.expect,
http = require('http'),
request = require('supertest');

buster.spec.expose();

describe("V2 API - group/get", function () {
    var server;

    beforeEach(function() {
        server = http.createServer(app).listen(app.get('port'), function () {
            console.log('Express server listening on port ' + app.get('port'));
        });
    });

    it("is accessable", function() {
        request(server)
          .get('/')
          .expect(200)
          .end(function(err, res){
             server.close();
             expect(err).toBe(null);
           });
    });
});

当我运行此测试时,我得到:

Failure: V2 API - group/get is accessible
No assertions!

1 test, 0 assertions, 1 runtime ... 1 failure
Express server listening on port 3000

这似乎不对,因为我确实有一个断言。问题是除非出现错误,否则它不会被调用。

另一个问题是,如果我有多个' if'块,服务器不会在它们之间重新启动。我可能正在使用节点+ express + buster + supertest stack错误,所以任何有关如何测试这些路由的帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

我有一些代码没有你的问题;它与您的几乎完全相同,但使用异步测试,例如

it("is accessable", function(done) {
    request(server)
      .get('/')
      .expect(200)
      .end(function(err, res){
         server.close();
         expect(err).toBe(null);
         done();
       });
});

我不太了解巴斯特是否知道这是解决这个问题的“正确方法”,但希望它有所帮助!