为什么jasmine-node没有拿起我的助手脚本?

时间:2012-04-10 01:16:03

标签: javascript unit-testing testing node.js jasmine

这个问题很可能是因为我之前缺乏node.js的经验,但我希望jasmine-node能让我从命令行运行我的jasmine规范。

TestHelper.js:

var helper_func = function() {
    console.log("IN HELPER FUNC");
};

my_test.spec.js:

describe ('Example Test', function() {
  it ('should use the helper function', function() {
    helper_func();
    expect(true).toBe(true);
  }); 
});

这是目录中唯一的两个文件。然后,当我这样做时:

jasmine-node .

我得到了

ReferenceError: helper_func is not defined

我确信答案很简单,但我没有找到任何超级简单的介绍,或者github上的任何明显的介绍。任何建议或帮助将不胜感激!

谢谢!

2 个答案:

答案 0 :(得分:16)

在节点中,所有内容都被命名为它的js文件。要使该函数可被其他文件调用,请将TestHelper.js更改为如下所示:

var helper_func = function() {
    console.log("IN HELPER FUNC");
};
// exports is the "magic" variable that other files can read
exports.helper_func = helper_func;

然后将my_test.spec.js更改为:

// include the helpers and get a reference to it's exports variable
var helpers = require('./TestHelpers');

describe ('Example Test', function() {
  it ('should use the helper function', function() {
    helpers.helper_func(); // note the change here too
    expect(true).toBe(true);
  }); 
});

并且,最后,我相信jasmine-node .将按顺序运行目录中的每个文件 - 但您不需要运行帮助程序。相反,您可以将它们移动到其他目录(并将./中的require()更改为正确的路径),或者您可以运行jasmine-node *.spec.js

答案 1 :(得分:4)

如果您将jasmine配置为:

,则不一定需要在规范(测试)文件中包含助手脚本
{
  "spec_dir": "spec",
  "spec_files": [
    "**/*[sS]pec.js"
  ],
  "helpers": [
    "helpers/**/*.js"
  ],
  "stopSpecOnExpectationFailure": false,
  "random": false
}

helpers /文件夹中的所有内容都将在Spec文件之前运行。在帮助器文件中有这样的东西来包含你的功能。

beforeAll(function(){
  this.helper_func = function() {
  console.log("IN HELPER FUNC");
  };
});

然后您就可以在spec文件中引用它了