codice per verificarefunzione di Unit Test che restituisce Mongoose promettono
import { User } from '../models/no-sql/user';
function userCreate(req) {
const user = new User({
username: req.username,
password: req.password
});
return user.save();
}
app.get('/userCreate', function(req, res) {
User.findOne({ username: req.username }).lean().exec((err, data) => {
if(data){
userCreate(req).then(function() {
// success
}, function(err) {
// error
});
}else{
// no user found
}
});
});
unità di prova
require('sinon-as-promised');
import request from 'supertest';
const user = {
username: newUserName,
password: 'password'
};
factory.build('user', user, function(err, userDocument) {
UserMock.
expects('findOne').withArgs(sinon.match.any)
.chain('lean')
.chain('exec')
.yields(null, undefined);
const docMock = sinon.mock(userDocument);
docMock.expects('save')
.resolves([]);
request(app)
.post('/userCreate')
.send({username: newUserName, password: 'password')
.expect(200)
.end((err, res) => {
if(err) done(err);
should.not.exist(err);
should.equal(res.body.success, true);
done();
});
});
il test ottiene quanto user.save ritorno() quindi timeout. Sembra che manchi qualcosa nei test unitari, tuttavia non viene generato alcun errore. Sto usando sinon-come-promesso per risolvere la promessa ma non sembra vederlo.
quando userCreate viene colpito con il cliente resto si sta lavorando bene ho escluso di risposta per chiarezza, ma il test non sta raggiungendo il ritorno dopo la funzione userCreate.then ' – mattwilsn