Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Meteor 如何使用velocity/jasmine对采集方法进行单元测试_Meteor_Jasmine_Meteor Velocity - Fatal编程技术网

Meteor 如何使用velocity/jasmine对采集方法进行单元测试

Meteor 如何使用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

我对javascript测试完全陌生,我正试图掌握如何处理涉及数据库的测试方法

例如,我有一个方法,如果数据库中有与查询匹配的文档,它将返回true

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(真);
});
});
});