node.js - unit - nodejs mocha chai test
¿Cómo escribir una prueba de solicitud de publicación en mocha con datos para probar si la respuesta coincide? (2)
Intenta con esto:
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();
});
Pregunta: ¿Cómo puedo escribir una prueba de solicitud de publicación en mocha que compruebe si la respuesta coincide?
La respuesta solo será una cadena de URL, ya que es una redirección para un servicio de terceros.
Ejemplo de trabajo Carga útil:
curl -H "Content-Type: application/json" -X POST -d ''{"participant":{"nuid":"98ASDF988SDF89SDF89989SDF9898"}}'' http://localhost:9000/api/members
member.controller.js // método 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
})
}
);
};
Envío esperado
{"redirectUrl":"http://localhost:9000/registration/98ASDF988SDF89SDF89989SDF9898"}
Ejemplo de trabajo Prueba de solicitud 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
});
});
También puede configurar el tipo en "formulario" y el tipo de contenido en json como se muestra a continuación:
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();
})
});
});
También debe configurar el analizador corporal cuando cree el servidor como se muestra a continuación:
server.use(bodyParser.urlencoded({ extended: false }));
server.use(bodyParser.json());