2015-07-02 3 views
17

Frage: Wie würde ich einen Post Request Test in Mocha schreiben, der testet, ob die Antwort übereinstimmt?Wie schreibe ich einen Post-Request-Test in Mocha mit Daten zu testen, ob die Antwort übereinstimmt?

Die Antwort wird nur eine URL-Zeichenfolge sein, da es sich um eine Weiterleitung für einen Dienst eines Drittanbieters handelt.

Arbeitsbeispiel Nutzlast:

curl -H "Content-Type: application/json" -X POST -d '{"participant":{"nuid":"98ASDF988SDF89SDF89989SDF9898"}}' http://localhost:9000/api/members 

member.controller.js // post-Methode

// Creates a new member in the DB. 
exports.create = function(req, res) { 
    Member.findByIdAndUpdate(req.body.participant.nuid, 
    { "$setOnInsert": { "_id": req.body.participant.nuid } }, 
     { "upsert": true }, 
     function(err,doc) { 
     if (err) throw err; 
     res.send({ 
      'redirectUrl': req.protocol + '://' + req.get('host') + '/registration/' + req.body.participant.nuid 
     }) 
    } 
); 
}; 

Erwartet res.send

{"redirectUrl":"http://localhost:9000/registration/98ASDF988SDF89SDF89989SDF9898"} 

Arbeitsbeispiel Anfrage Test-GET

var should = require('should'); 
var app = require('../../app'); 
var request = require('supertest'); 

describe('GET /api/members', function() { 

    it('should respond with JSON array', function(done) { 
    request(app) 
     .get('/api/members') 
     .expect(200) 
     .expect('Content-Type', /json/) 
     .end(function(err, res) { 
     if (err) return done(err); 
     res.body.should.be.instanceof(Array); 
     done(); 
     }); 
    }); 
    it('should respond with redirect on post', function(done) { 
    // need help here 
    }); 
}); 

Antwort

10

mit Try this:

it('should respond with redirect on post', function(done) { 
    request(app) 
     .post('/api/members') 
     .send({"participant":{"nuid":"98ASDF988SDF89SDF89989SDF9898"}}) 
     .expect(200) 
     .expect('Content-Type', /json/) 
     .end(function(err, res) { 
     if (err) done(err); 
     res.body.should.have.property('participant'); 
     res.body.participant.should.have.property('nuid', '98ASDF988SDF89SDF89989SDF9898'); 
     done(); 
     }); 
    }); 
+2

Wurde gerade mit superagenten verwechselt;) – javierfdezg

+1

was bedeutet die 'app'variable? –

+5

'TypeError: Anfrage (...). Post (...). Send ist keine Funktion' –

1

Sie auch die Art einstellen auf "Form" und Inhaltstyp JSon wie ich weiter unten zeigen:

it("returns a token when user and password are valid", (done) => { 
    Users.createUserNotAdmin().then((user: any) => { 
     supertestAPI 
     .post("/login") 
     .set("Connection", "keep alive") 
     .set("Content-Type", "application/json") 
     .type("form") 
     .send({"email": user.email, password: "123456"}) 
     .end((error: any, resp: any) => { 
      chai.expect(JSON.parse(resp.text)["token"].length).above(400, "The token length should be bigger than 400 characters."); 
      done(); 
     }) 
    }); 
}); 

Sie müssen auch den body-parser beim Erstellen des Servers wie unten gezeigt einstellen:

server.use(bodyParser.urlencoded({ extended: false })); 
server.use(bodyParser.json()); 
Verwandte Themen