El Mac
El Mac

Reputation: 3419

Chai http Promise never failing

I am using Chai http and the promise. The following test should fail, but it passes without ever calling the then function. If I add the done parameter to wait for the async function to finish, it fails (correctly). Am I doing something wrong?

it('Returns the correct amount of events', function() {
    chai.request(app)
        .get('/api/events/count')
        .then(function(res) {
            throw new Error('why no throw?');
            expect(res).to.have.status(200);
            expect(res).to.be.json;
        })
        .catch(function(err) {
            throw err;
        });
});

Upvotes: 2

Views: 903

Answers (1)

Pavlo Zhmak
Pavlo Zhmak

Reputation: 161

When you forget to return promise your test is evergreen. So, you just need to return promise to make it work:

it('Returns the correct amount of events', function() {
  return chai.request(app)
    .get('/api/events/count')
    .then(function(res) {
        throw new Error('why no throw?');
        expect(res).to.have.status(200);
        expect(res).to.be.json;
    })
    .catch(function(err) {
        return Promise.reject(err);
    });
});

Upvotes: 1

Related Questions