我正在使用Wolfpack.js以避免“抬起”我的Sails而且我遇到了一个没有数据库来测试我的'独特'属性要求的问题。我试图解雇请求两次,但是如果它假装数据库,我似乎无法添加到那个假数据库的东西......如何在没有数据库的情况下测试我的模型的要求?有没有办法'伪造'我的数据库的'重复键'响应,所以我的模型可以触发'唯一'的要求并将错误返回给我的测试?
我的模特:
module.exports = {
attributes: {
email: {
type: 'email',
required: true,
notEmpty: true,
unique: true
},
...
}
};
我的测试:
it('should return `already exists` error when email already exists', function (done) {
User.create({ email: 'test@example.com', password: 'P4$sword1234' }, function (err, user) {
should.exist(err);
err.message.should.have.string('that `email` already exists');
should.not.exist(user);
done();
});
});
这是最好的方法吗?我完全走错了路吗?另外,我应该测试从Sails.js自己的验证返回的错误消息字符串吗?我担心如何告诉控制器有关模型的错误。
答案 0 :(得分:2)
使用wolfpack测试错误的最佳方法是使用setErrors
方法:https://github.com/fdvj/wolfpack#mocking-errors
我写这些文章以及解释如何在更复杂的应用程序中使用Wolfpack: https://fernandodevega.com/en/2015/12/19/functional-testing-a-sailsjs-api-with-wolfpack-part-3/
所以在你的情况下,在你的设置中,你可以做这样的事情
User.setErrors('that `email` already exists');
User.create({ email: 'test@example.com', password: 'P4$sword1234' }, function (err, user) {
should.exist(err);
err.message.should.have.string('that `email` already exists');
should.not.exist(user);
done();
});