Question

I'm having some issues testing routes using 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);
           });
    });
});

When I run this test, I get:

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

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

Which seems wrong, because I actually do have an assertion. The problem is that it doesn't get called unless there is an error.

Another issue is that if I have multiple 'if' blocks, the server doesn't restart between them. I might be using the node + express + buster + supertest stack wrong, so any help with how to test these routes would be greatly appreciated.

Was it helpful?

Solution

I have some code that doesn't have your problem; it does almost the same thing as yours but with asynchronous tests, e.g.

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

I don't know enough about Buster to know if this is the "right way" to fix this issue, but hope it helps!

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top