【问题标题】:Jasmine, Grunt, RequireJS Stalling on the test outputJasmine、Grunt、RequireJS 在测试输出上停滞
【发布时间】:2013-06-07 03:08:49
【问题描述】:

我正在尝试创建一个节点样板,并正在尝试创建一个任务来运行 Jasmine 测试。我的 Gruntfile.js 中有以下配置:

jasmine: {
  src : ['static/test/spec/**/*.js'],
  options: {
    host: 'http://localhost:<%= connect.test.port %>/',
    // specs : 'static/test/spec/**/*.js',
    template: require('grunt-template-jasmine-requirejs'),
    templateOptions: {
      requireConfigFile: 'static/test/SpecRunner.js',
      requireConfig: {
        baseUrl: './'
      }
    }
  }
},
connect: {
  test: {
    port: 8082
  }
}
....
grunt.registerTask('jasmine-test', ['connect', 'jasmine']);

当我运行任务时,我没有收到任何错误,但是我没有得到任何进一步的信息:

Running "connect:test" (connect) task
Started connect web server on localhost:8000.

Running "jasmine:src" (jasmine) task
Testing jasmine specs via phantom

_SpecRunner.html 文件已创建,当我在浏览器中查看该文件时,我不仅没有看到任何错误,而且还看到我的 jasmine 测试运行正常。我错过了什么导致 grunt 任务挂起?

干杯,

基亚诺什

【问题讨论】:

    标签: requirejs jasmine gruntjs


    【解决方案1】:

    我能够让您的示例正常工作,并且您在这里的工作正常。我确实做了一些修改,但我得到了相同的结果。您正在使用的是连接,它生成本地网络服务器,然后测试在浏览器中运行。所以,你的任务没有挂起,它只是运行服务器。

    但听上去,您可能希望您的测试在终端中运行?如果是这样,我有一个相当不错的解决方案给你:

    package.json

    {
    
    "name": "Jasmine Tests",
      "description": "Jasmine Testing",
      "version": "0.0.1",
      "devDependencies": {
        "grunt": "0.4.x",
        "grunt-contrib-watch": "~0.2.0",
        "grunt-contrib-jshint": "~0.4.3",
        "grunt-contrib-jasmine": "~0.4.2",
        "phantomjs": "1.8.2-0",
      }
    }
    

    Gruntfile.js

    module.exports = function(grunt) {
      grunt.initConfig({
        pkg: grunt.file.readJSON("package.json"),
        watch: {
          grunt: {
            files: ["Gruntfile.js", "package.json"],
            tasks: "default"
          },
          javascript: {
            files: ["src/client/**/*.js", "specs/**/*Spec.js"],
            tasks: "test"
          }
        },
        jasmine: {
          src: "src/client/js/*.js",
          options: {
            specs: "specs/client/*Spec.js"
          }
        },
        jshint: {
          all: [
            "Gruntfile.js",
            "src/**/*.js",
            "spec/**/*.js"
          ],
          options: {
            jshintrc: ".jshintrc"
          }
        }
      });
      grunt.loadNpmTasks("grunt-contrib-watch");
      grunt.loadNpmTasks("grunt-contrib-jshint");
      grunt.loadNpmTasks("grunt-contrib-jasmine");
      grunt.registerTask("test", ["jshint", "jasmine"]);
      grunt.registerTask("default", ["test"]);
    };
    

    您可以将文件结构更改为适合您的任何内容。设置这两个文件都运行以下命令:

    npm install
    

    grunt test
    

    grunt watch
    

    现在我确实添加了一些东西,比如 jshint 和 watch...watch 是可选的,但是拥有它真的很棒。我认为 jshint 是必须的,但请随时将其从解决方案中删除。

    真正的关键是phantomjs,它使您能够在“幻像”浏览器中运行这些测试,并输出到终端。

    您还需要根据自己的喜好自定义目录。

    我在此发布了good blog post(我也进行了服务器端测试)。

    编辑:如果你选择走这条路,你还需要一个 .jshintrc 文件。

    .jshintrc

    {
      "curly"   : true,
      "eqeqeq"  : true,
      "immed"   : true,
      "latedef" : true,
      "newcap"  : true,
      "noarg"   : true,
      "sub"     : true,
      "undef"   : true,
      "boss"    : true,
      "eqnull"  : true,
      "node"    : true,
      "es5"     : true,
      "globals" : {
        "it"         : false,
        "xit"        : false,
        "describe"   : false,
        "xdescribe"  : false,
        "beforeEach" : false,
        "afterEach"  : false,
        "expect"     : false,
        "spyOn"      : false
      }
    }
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-14
      相关资源
      最近更新 更多