ladjs / supertest

🕷 Super-agent driven library for testing node.js HTTP servers using a fluent API. Maintained for @forwardemail, @ladjs, @spamscanner, @breejs, @cabinjs, and @lassjs.
MIT License
13.75k stars 758 forks source link

[fix] Tests timeout no matter what if expect fails. #837

Open Jason-Terry opened 4 months ago

Jason-Terry commented 4 months ago

Describe the bug

Node.js version: v20.10.0 OS version: MAC 14.2.1 (23C71)

The following test returns 200, however when trying to force the test to fail by expecting status to be 201 as below, the test always times out, and doesn't fail immediately.

How can I prevent this.

it('should return account ids', done => {
    request(app).get('/api/v1/account/info/ids').set(headers).end((err, res) => {
      expect(res.status).toBe(201);
      expect(res.body.message).toEqual("Last 1000 Ids added...");
      done();
    });
  });

another example, this time similar to the async await example from the readme.

  it('should return account info by id', async () => {
    let res = await request(app).get(`/api/v1/account/info/ids/${expected.id}`).set(headers);
      expect(res.body.id).toEqual(999); // <-- THIS IS A FAILURE, TIMES OUT...
      expect(res.body.wc_customer_id).toEqual(expected.wc_customer_id);
      expect(res.body.chrono_patient_id).toEqual(expected.chrono_patient_id);
      expect(res.body.klaviyo_profile_id).toEqual(expected.klaviyo_profile_id);
      expect(res.body.suggestic_db_id).toEqual(expected.suggestic_db_id);
      expect(res.body.email).toEqual(expected.email); 
  });

Actual behavior

Test times out rather than returning on failure, or continuing to run.

Expected behavior

Test would check all assertions OR exit properly on assertion failure.

Code to reproduce

Any test similar to the example above.

Checklist

ryaneclpse commented 3 months ago

@Jason-Terry Have you tried this:

it('should return account info by id', async function() {
    this.timeout(60000);
    let res = await request(app).get(`/api/v1/account/info/ids/${expected.id}`).set(headers);
      expect(res.body.id).toEqual(999); // <-- THIS IS A FAILURE, TIMES OUT...
      expect(res.body.wc_customer_id).toEqual(expected.wc_customer_id);
      expect(res.body.chrono_patient_id).toEqual(expected.chrono_patient_id);
      expect(res.body.klaviyo_profile_id).toEqual(expected.klaviyo_profile_id);
      expect(res.body.suggestic_db_id).toEqual(expected.suggestic_db_id);
      expect(res.body.email).toEqual(expected.email); 
  });