How to chain http calls with superagent/supertest?

express, node.js, superagent, supertest

Solution

The calls are made asynchronous, so you need to use callback functions to chain them.

it('should respond to GET with added items', function(done) {
    var agent = request(app);
    agent.post('/player').type('json').send({name:"Messi"}).end(function(){
        agent.post('/player').type('json').send({name:"Maradona"}).end(function(){
            agent.get('/player')
                .set("Accept", "application/json")
                .expect(200)
                .end(function(err, res) {
                    res.body.should.have.property('items').with.lengthOf(2);
                    done();
                });
        });
    });
});

Problem

I am testing an express API with supertest. I couldn't get multiple requests in a test case to work with supertest. Below is what i tried in a test case. But the test case seem to only execute the last call which is the HTTP GET. ``` it('should respond to GET with added items', function(done) { var agent = request(app); agent.post('/player').type('json').send({name:"Messi"}); agent.post('/player').type('json').send({name:"Maradona"}); agent.get('/player').set("Accept", "application/json") .expect(200) .end(function(err, res) { res.body.should.have.property('items').with.lengthOf(2); done(); }); ); ``` Anything i am missing here, or is there another way to chain http calls with superagent?

Original source