如何从 grunt 为节点模块执行茉莉花测试

How to execute jasmine tests for node modules from grunt

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

src/foo.js

exports.bar = 23;

spec/foo.spec.js

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

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

grunt-contrib-jasmine节点模块系统不可用,我得到

>> ReferenceError: Can't find variable: require at
>> spec/foo.spec.js:1

grunt-jasmine-node, but it depends on jasmine-node 未维护且包含 Jasmine 1.3.1,因此这不是一个选项。

Jasmine supports node.js out of the box,通过在 spec 目录中包含一个文件 jasmine.json,我可以 运行 使用 jasmine cli 进行测试。是否有任何 clean 方法来 运行 来自 g运行t 的相同测试?

您可以使用 grunt-exec,它就像在命令行中输入的一样执行值:

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 任务。