jasmine-node - 包括帮助者

时间:2014-02-19 01:01:33

标签: node.js meteor jasmine jasmine-node

我正在尝试使用Meteor测试我的jasmine-node应用程序。我已经在帮助器( spec_helper.js )中删除了Meteor框架的一些方法:

  var Meteor = {
    startup: function (newStartupFunction) {
        Meteor.startup = newStartupFunction;
    },
    Collection: function (collectionName) {
        Meteor.instantiationCounts[collectionName] = Meteor.instantiationCounts[collectionName] ?
            Meteor.instantiationCounts[collectionName] + 1 : 1;
    },
    instantiationCounts: {}
  };

此时我需要运行 spec_helper.js 中的代码(相当于包含其他语言的模块)。我尝试了以下内容,但没有成功:

require(['spec_helper'], function (helper) {
    console.log(helper); // undefined
    describe('Testing', function () {
        it('should test Meteor', function () {
            // that's what I want to call from my stubs... 
            // ...it's obviously undefined
            Meteor.startup();
        });
    });
});

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:9)

jasmine_node将在您的spec目录中自动加载帮助程序(包含单词helpers的任何文件)。

注意:您可以作弊并使用helper,因为它是helpers的子字符串......如果您将助手拆分到多个文件中会更有意义...单数与复数。

如果您正在执行specs/unit的规范,则创建一个名为specs/unit/meteor-helper.js的文件,jasmine_node会自动为您提供该文件。如果您的规范是用vanilla JavaScript编写的,它将加载扩展名为.js的文件。如果您在命令行或通过grunt任务配置传递--coffee switch(如果您雄心勃勃,甚至可能使用gulp),那么它将加载扩展名为js|coffee|litcoffee的帮助程序。

您应该从每个帮助文件中导出hash,如下所示:

specs/unit/meteor-helper.js

// file name must contain the word helper // x-helper is the convention I roll with module.exports = { key: 'value', Meteor: {} }

然后,jasmine_nodewrite each key发送到global namespace

这样,您只需从规范或任何受测试的系统中键入keyMeteor(通常是规范正在执行断言的lib文件夹中的代码)。

此外,jasmine_node还允许您通过--nohelpers开关禁止加载帮助者(有关详细信息,请参阅codeREADME。)

这是通过节点处理jasmine帮助程序的正确方法。您可能会遇到一些引用jasmine.yml文件的答案/示例;甚至可能spec_helper.js。但请记住this is for ruby land而非节点。

更新:如果jasmine-node包含单词helpers,则x-helper.js|coffee|litcofee只会显示您的文件。命名每个帮助文件meteor-helper.coffee应该可以解决问题。即{{1}}。