2013-02-20 91 views
3

当服务器使用tinytest运行时可以测试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} 

我知道这是因为他们没有与客户端进行通信的服务器。当我尝试在服务器和客户端上运行此测试时,我仍然遇到与客户端相同的问题。有没有办法在服务器运行时测试客户端?

感谢,安德鲁

+1

你有没有尝试过'新的Meteor.Collection'没有参数(一个存根)? – Rahul 2013-02-20 17:34:44

+0

@Rahul不,我没有尝试过。我认为这是有道理的,因为我并不是真的想测试客户端和服务器之间的通信/同步,但是我希望集合能够按照预期在客户端和服务器上工作。将集合名称设为null后,一切都很好。你想写这个答案(建议使用存根)?谢谢! – 2013-02-20 18:46:57

+0

刚刚添加它作为答案,谢谢! – Rahul 2013-02-20 19:17:29

回答

6

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

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

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

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

+0

我应该在客户端和服务器上运行它吗?无论哪种方式,我尝试过'客户','服务器'和['客户','服务器']。所有选项都产生相同的“等待”状态。 – 2013-02-20 18:40:31

+0

这是使用'addAsync'的不正确方法。我已经为你修好了。 – 2013-07-23 15:35:40

相关问题