如何在发布/订阅中使用tinytest?

时间:2014-04-28 09:54:07

标签: javascript unit-testing testing meteor

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

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

我还确保我的测试包中包含各种所需的其他/身份验证包。

Package.on_test(function (api) {
    api.use([
        'accounts-ui',
        'accounts-facebook', ...

我希望在LiveData test suite甚至Iron-Router测试套件中找到一些示例,但尚未提供任何建议。 FWIW我已经审查了与流星测试的其他链接,Laika和RTD 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)

编辑:this guidance on asycn tests似乎非常相关。

1 个答案:

答案 0 :(得分:0)

如果你想测试你的方法是否订阅了正确的查找选择器,我会窥探Meteor.users.find()并检查是否使用正确的参数调用它。

var actualFind = Meteor.users.find, receivedArguments;
Meteor.users.find = function () {
    receivedArguments = arguments;
    actualFind.apply(actualFind, arguments);
}

然后对receivedArguments进行测试。

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

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