如何使用 velocity/jasmine 对收集方法进行单元测试
How to unit test collection methods with velocity/jasmine
我是 javascript 测试的新手,我正试图掌握如何处理涉及数据库的测试方法
例如,我有这个方法 returns 如果数据库中有任何文档匹配查询
则为真
Payments = new Mongo.Collection('payments');
_.extend(Payments, {
hasAnyPayments: function(userId) {
var payments = Payments.find({ userId: userId });
return payments.count() > 0;
}
});
到目前为止我只写了我认为正确的结构,但我很迷茫
describe('Payments', function() {
describe('#hasAnyPayments', function() {
it('should return true when user has any payments', function() {
});
});
});
这样的测试甚至应该触及数据库吗?非常感谢任何建议
除非您手动将数据输入 Mongo(或在 Meteor 之外),否则您不需要测试数据库。
您应该测试的是代码中的执行路径。
因此对于上述情况,hasAnyPayments
是一个查找所有用户付款的单元,如果超过 0,则 returns 为真。因此您的测试看起来像这样:
describe('Payments', function() {
describe('#hasAnyPayments', function() {
it('should return true when user has any payments', function() {
// SETUP
Payments.find = function() { return 1; } // stub to return a positive value
// EXECUTE
var actualValue = Payments.hasAnyPayments(); // you don't really care about the suer
// VERIFY
expect(actualValue).toBe(true);
});
});
});
我是 javascript 测试的新手,我正试图掌握如何处理涉及数据库的测试方法
例如,我有这个方法 returns 如果数据库中有任何文档匹配查询
则为真Payments = new Mongo.Collection('payments');
_.extend(Payments, {
hasAnyPayments: function(userId) {
var payments = Payments.find({ userId: userId });
return payments.count() > 0;
}
});
到目前为止我只写了我认为正确的结构,但我很迷茫
describe('Payments', function() {
describe('#hasAnyPayments', function() {
it('should return true when user has any payments', function() {
});
});
});
这样的测试甚至应该触及数据库吗?非常感谢任何建议
除非您手动将数据输入 Mongo(或在 Meteor 之外),否则您不需要测试数据库。
您应该测试的是代码中的执行路径。
因此对于上述情况,hasAnyPayments
是一个查找所有用户付款的单元,如果超过 0,则 returns 为真。因此您的测试看起来像这样:
describe('Payments', function() {
describe('#hasAnyPayments', function() {
it('should return true when user has any payments', function() {
// SETUP
Payments.find = function() { return 1; } // stub to return a positive value
// EXECUTE
var actualValue = Payments.hasAnyPayments(); // you don't really care about the suer
// VERIFY
expect(actualValue).toBe(true);
});
});
});