在服务器运行时使用tinytest测试Meteor客户端

时间:2013-02-20 17:05:55

标签: meteor

在服务器运行时使用tinytest是否可以测试Meteor客户端?这是我的测试客户端的示例:

Tinytest.add("Add object to a collection", function(test) {
  var people = new Meteor.Collection("people");
  people.insert({"name": "Andrew"}, function(error, id) {
    test.isNull(error);
  });
});

在几分之一秒内,它会通过,但随后会进入“等待”状态。我也很肯定错误不是空的。

Meteor.Error {error: 404, reason: "Method not found", details: undefined}

我知道这种情况正在发生,因为它们不是客户端与之通信的服务器。当我尝试在服务器和客户端上运行此测试时,我继续遇到与客户端相同的问题。有没有办法在服务器运行时测试客户端?

谢谢,安德鲁

2 个答案:

答案 0 :(得分:6)

使用不带参数的new Meteor.Collection来创建不需要服务器的存根集合。见the docs on Collections

  

如果您传递null作为名称,那么您将创建本地集合。它在任何地方都没有同步;它只是一个支持Mongo风格的查找,插入,更新和删除操作的本地暂存器。

答案 1 :(得分:5)

这是异步测试,因此您必须使用addAsync

Tinytest.addAsync("Add object to a collection", function(test, next) {
  var people = new Meteor.Collection("people");
  people.insert({"name": "Andrew"}, function(error, id) {
    test.isNull(error);
    next();
  });
});

请注意下一个参数,表示您已在回调中完成。