Meteor 如何使用velocity/jasmine对采集方法进行单元测试
我对javascript测试完全陌生,我正试图掌握如何处理涉及数据库的测试方法 例如,我有一个方法,如果数据库中有与查询匹配的文档,它将返回trueMeteor 如何使用velocity/jasmine对采集方法进行单元测试,meteor,jasmine,meteor-velocity,Meteor,Jasmine,Meteor Velocity,我对javascript测试完全陌生,我正试图掌握如何处理涉及数据库的测试方法 例如,我有一个方法,如果数据库中有与查询匹配的文档,它将返回true Payments = new Mongo.Collection('payments'); _.extend(Payments, { hasAnyPayments: function(userId) { var payments = Payments.find({ userId: userId }); return paymen
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,则返回true。所以你的测试应该是这样的:
description('Payments',function(){
描述(#hasAnyPayments',函数(){
它('当用户有任何付款时应返回true',函数(){
//设置
Payments.find=function(){return 1;}//返回正值的存根
//执行
var actualValue=Payments.hasAnyPayments();//你并不真的关心原告
//核实
expect(实际值)。toBe(真);
});
});
});
除非您手动将数据输入Mongo(或在Meteor之外),否则无需测试数据库
您应该测试的是代码中的执行路径
因此,对于上述情况,hasAnyPayments
是一个查找所有用户付款的单元,如果超过0,则返回true。所以你的测试应该是这样的:
description('Payments',function(){
描述(#hasAnyPayments',函数(){
它('当用户有任何付款时应返回true',函数(){
//设置
Payments.find=function(){return 1;}//返回正值的存根
//执行
var actualValue=Payments.hasAnyPayments();//你并不真的关心原告
//核实
expect(实际值)。toBe(真);
});
});
});