我正在尝试使用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();
});
});
});
非常感谢任何帮助。
答案 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_node
将write each key发送到global namespace。
这样,您只需从规范或任何受测试的系统中键入key
或Meteor
(通常是规范正在执行断言的lib
文件夹中的代码)。
此外,jasmine_node
还允许您通过--nohelpers
开关禁止加载帮助者(有关详细信息,请参阅code或README。)
这是通过节点处理jasmine帮助程序的正确方法。您可能会遇到一些引用jasmine.yml
文件的答案/示例;甚至可能spec_helper.js
。但请记住this is for ruby land而非节点。
更新:如果jasmine-node
包含单词helpers
,则x-helper.js|coffee|litcofee
只会显示您的文件。命名每个帮助文件meteor-helper.coffee
应该可以解决问题。即{{1}}。