如何使用 Wolfpack.js 测试我的 Sails.js 模型的唯一电子邮件属性?
How can I test my Sails.js model's unique email attribute with Wolfpack.js?
我正在使用 Wolfpack.js 来避免必须 'lift' 我的 Sails 并且我 运行 遇到没有数据库来测试我的 'unique' 属性的问题要求反对。我试着只发出两次请求,但由于它是如何伪造数据库的,我似乎无法向那个伪造的数据库添加东西……如果没有数据库,我如何测试我的模型的要求?有没有办法 'fake' 我的数据库的 'duplicate key' 响应,以便我的模型可以触发 'unique' 要求和 return 我的测试错误?
我的模特:
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();
});
});
这是最好的方法吗?我完全走错路了吗?另外,我是否应该测试 return 来自 Sails.js 自己的验证的错误消息字符串?我担心我应该如何告诉控制器来自模型的错误。
使用 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();
});
我正在使用 Wolfpack.js 来避免必须 'lift' 我的 Sails 并且我 运行 遇到没有数据库来测试我的 'unique' 属性的问题要求反对。我试着只发出两次请求,但由于它是如何伪造数据库的,我似乎无法向那个伪造的数据库添加东西……如果没有数据库,我如何测试我的模型的要求?有没有办法 'fake' 我的数据库的 'duplicate key' 响应,以便我的模型可以触发 'unique' 要求和 return 我的测试错误?
我的模特:
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();
});
});
这是最好的方法吗?我完全走错路了吗?另外,我是否应该测试 return 来自 Sails.js 自己的验证的错误消息字符串?我担心我应该如何告诉控制器来自模型的错误。
使用 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();
});