1

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

私は実際に主張を持っているので、これは間違っているようです。問題は、エラーが発生しない限り呼び出されないことです。

もう 1 つの問題は、複数の 'if' ブロックがある場合、それらの間でサーバーが再起動しないことです。node + express + buster + supertest スタックを間違って使用している可能性があるため、これらのルートをテストする方法についての助けをいただければ幸いです。

4

1 に答える 1

2

問題のないコードがいくつかあります。それはあなたのものとほぼ同じことをしますが、非同期テストを使用します。

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

これがこの問題を解決するための「正しい方法」であるかどうかを知るには、バスターについて十分に知りませんが、お役に立てば幸いです!

于 2014-02-10T01:53:54.497 に答える