我有这段代码:
var async = require('async'),
util = require('util');
var Parse = require('parse/node');
function signup(userInfo, callback) {
var username = userInfo.username,
email = userInfo.email,
password = userInfo.password;
var user = new Parse.User();
user.set('username', username);
user.set('email', email);
user.set('password', password);
user.signUp(null, {
success: (user) => {
// console.log('BaaS Signup success ' + util.inspect(user));
callback(null, user);
},
error: (user, error) => {
// console.log('BaaS Signup error ' + util.inspect(error));
callback(JSON.stringify(error));
}
});
}
我想对它进行单元测试,因此需要能够测试成功和错误函数的内容。
如果用户是一个库,我可以使用proxyquire并将一个存根返回一个承诺并完成它,但是,构建了用户。
如何存根Parse.User()
以便我可以控制生成的对象?
答案 0 :(得分:1)
这似乎有效:
lapply(names(mylist), function(nm)
save.dta13(mylist[[nm]], paste0(nm, ".dta")))
答案 1 :(得分:1)
你应该能够像对待任何其他功能那样存根构造函数,然后只返回你的虚假对象:
sinon.stub(Parse, "User")
.andReturn(fakeUser);
let u = new Parse.User();
//u === fakeUser
答案 2 :(得分:0)
虽然它很难看,但我已经成功地完成了我的测试工作:
var chai = require('chai'),
expect = chai.expect,
util = require('util');
var proxyquire = require('proxyquire').noPreserveCache();
var sinon = require('sinon');
describe('SignUp', () => {
it('Expect to sign up the user and return the user', (done) => {
var stub = {
parse: {
User: function User() {
this.set = () => {};
this.signUp = (a, c) => {
c.success({id: 'UserID'});
};
}
}
},
baas = proxyquire('./../baas.js', {
'parse/node': stub.parse
});
baas.signup({
username: 'User',
email: 'user@test.com',
password: 'Password'
}, (err, user) => {
try {
expect(err).to.not.be.ok;
expect(user).to.be.ok;
done();
} catch(err) {
done(err);
}
});
});
});
我收到的回答让我意识到我不会像我应该那样使用sinon,而我所有的测试都是通过黑客攻击部分内容和sinon来建立的。
我需要重新阅读文档。