Javascript 如何从grunt为节点模块执行jasmine测试

Javascript 如何从grunt为节点模块执行jasmine测试,javascript,node.js,gruntjs,jasmine,Javascript,Node.js,Gruntjs,Jasmine,我想在Grunt构建中为node.js模块运行一些Jasmine 2.x测试。我的设置如下所示: src/foo.js exports.bar = 23; var foo = require("../src/foo.js"); define("foo", function() { it("exports bar as 23", function() { expect(foo.bar).toBe(23); }); }); spec/foo.spec.js exports.ba

我想在Grunt构建中为node.js模块运行一些Jasmine 2.x测试。我的设置如下所示:

src/foo.js

exports.bar = 23;
var foo = require("../src/foo.js");

define("foo", function() {
  it("exports bar as 23", function() {
    expect(foo.bar).toBe(23);
  });
});
spec/foo.spec.js

exports.bar = 23;
var foo = require("../src/foo.js");

define("foo", function() {
  it("exports bar as 23", function() {
    expect(foo.bar).toBe(23);
  });
});
与节点模块系统不可用,我得到

>> ReferenceError: Can't find variable: require at
>> spec/foo.spec.js:1
有,但这取决于哪个是未维护的,包括Jasmine 1.3.1,所以这不是一个选项

Jasmine,通过在
spec
目录中包含一个文件
Jasmine.json
,我可以使用
Jasmine
cli运行测试。还有什么干净的方法可以从grunt运行相同的测试吗?

您可以使用它,它只会像在命令行上键入一样执行值:

module.exports = function (grunt) {

    grunt.initConfig({

        exec: {
            jasmine: "jasmine"
        },

        env: {
            test: {
                NODE_ENV: "test"
            }
        }
    });

    grunt.loadNpmTasks("grunt-exec");
    grunt.loadNpmTasks("grunt-env");

    grunt.registerTask("test", [
        "env:test",
        "exec:jasmine"
    ]);
};

这将允许您保持jasmine的最新状态,并将其用于其他grunt任务。

完美,这很有效。当测试失败时,jasmine进程将退出,并返回一个错误代码,从而导致grunt构建失败。