Search code examples
javascriptnode.jsjasminesupertest

Why is my jasmine test timing out before the DEFAULT_TIMEOUT_INTERVAL?


Related: Can't set timeout for jasmine

Jasmine 2.4.1

My test reports a failure due to timeout, even though the timeout value appears to be greater than the reported time.

I'm doing this:

describe('tests content controller', function(){
    beforeAll(function(done) {
        jasmine.DEFAULT_TIMEOUT_INTERVAL= 120000;
        //...
    })
    fit('/content GET should return 200',function(done){
        request(app)
        .get('/content')
        .set('Authorization', "bearer " + requestor.token)
        .set('Accept', 'application/json')
        .expect(200)
        .end(function (err, res) {
            console.log('timeout',jasmine.DEFAULT_TIMEOUT_INTERVAL); //prints 120000
            if (err) done.fail(err);
            expect(res.statusCode).toBe(200);
            done();
        })
    }); 

Then this test fails, with:

1) tests content controller /content GET should return 200
  Message:
    Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
  Stack:
    Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
        at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)


Finished in 106.449 seconds

106.449 seconds is less than 120 seconds, which is what my timeout value appears to be set to.

So why is this test failing?


Solution

  • I wasn't calling done inside of my beforeAll, which caused this error.