3

是否可以在服务器运行时使用 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}

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

谢谢,安德鲁

4

2 回答 2

6

不带参数使用new Meteor.Collection创建不需要服务器的存根集合。请参阅Collections 上的文档

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

于 2013-02-20T19:17:02.710 回答
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();
  });
});

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

于 2013-02-20T17:38:48.357 回答