Javascript 如何将tinytest与发布/订阅一起使用?

Javascript 如何将tinytest与发布/订阅一起使用?,javascript,unit-testing,testing,meteor,Javascript,Unit Testing,Testing,Meteor,Tinytest目前还没有文档记录,但它看起来是一个很好的轻量级框架。我有一个包,它依赖于一些发布/订阅数据,并且在如何使用它方面有点困难。我似乎无法订阅用户 我是否需要保证首先运行服务器块,以便可以订阅发布块 我还确保我的测试包包括各种必需的其他/auth包 Package.on_test(function (api) { api.use([ 'accounts-ui', 'accounts-facebook', ... 我希望在测试套件中找到一些示例

Tinytest目前还没有文档记录,但它看起来是一个很好的轻量级框架。我有一个包,它依赖于一些发布/订阅数据,并且在如何使用它方面有点困难。我似乎无法订阅用户

我是否需要保证首先运行服务器块,以便可以订阅发布块

我还确保我的测试包包括各种必需的其他/auth包

Package.on_test(function (api) {
    api.use([
        'accounts-ui',
        'accounts-facebook', ...
我希望在测试套件中找到一些示例,但还没有找到任何结果。FWIW我已经回顾了其他关于meteor测试的链接,Laika和RTD现在看起来有点过头了

指针欣赏,如何得到一个基本的样本如下工作

if Meteor.isServer
    Tinytest.add "Chatbot data", (test) ->
        test.equal 1, 1, "server tests running"

        userdata = {
            email: "c@c.com"
            profile:
                nickname: "chaka"
                name: "chaka"
                icon: "/images/bots/chaka/icon/50.png"
        }

        Meteor.users.insert(userdata)
        check = Meteor.users.findOne()
        test.isNotNull check, "can't create user"
        console.log("userCheck", check) # ok
        Meteor.publish 'allUsers', ->
            return Meteor.users.find()


if Meteor.isClient
    Tinytest.add "Chatbot create", (test) ->

        Meteor.subscribe("allUsers")
        user = Meteor.users.findOne()
        if (user == undefined)
            test.fail("cant find user:", user)

编辑:似乎非常相关。

如果您想测试您的方法是否使用正确的查找选择器订阅,我将监视Meteor.users.find()并检查是否使用正确的参数调用它

var actualFind = Meteor.users.find, receivedArguments;
Meteor.users.find = function () {
    receivedArguments = arguments;
    actualFind.apply(actualFind, arguments);
}
然后对受试者进行测试

测试订阅/发布本身是meteor团队应该做的事情


您应该只为您编写的代码编写单元测试。

哦,非常好。我没有意识到你可以这么容易地使用JS方法。这可能取决于已经定义的“实际查找”meteor方法,但这可以通过将其放入启动块来控制。