如何使用数据编写摩卡咖啡发布请求testing以testing响应是否匹配?

问题:我如何在摩卡咖啡中写一个post请求testing来testing响应是否匹配?

响应只是一个urlstring,因为它是第三方服务的redirect。

工作示例有效载荷:

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

member.controller.js // post方法

 // 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 }) } ); }; 

预计res.send

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

工作示例GET请求testing

 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 }); }); 

试试这个:

 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(); }); }); 

你也可以设置types为“form”,内容types为json,如下所示:

 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(); }) }); }); 

如下所示,您还必须在创build服务器时设置body-parser:

  server.use(bodyParser.urlencoded({ extended: false })); server.use(bodyParser.json()); 
Interesting Posts