使用grunt在生产代码上运行jasmine测试的最佳工作流程是什么?

时间:2013-03-07 20:07:58

标签: bdd jasmine gruntjs

我已经在互联网上寻找对我​​想要做的事情的描述,但无济于事。我希望通过从本地主机加载PhantomJS来为我正在构建直接在生产代码上运行的Web构建单元测试。我想在加载真实网站并与dom交互以测试所有内容之后运行一个贯穿我的规范的Grunt任务。我几乎就在那里,但实际上我无法加载页面。

如果我将主机项添加到我的gruntfile中的jasmine选项中,如下所示:

options: {
        specs: 'spec/*Spec.js',
        helpers: 'spec/*Helper.js',
        vendor: ['app/assets/javascripts/src/libs/jquery-1.9.1.min.js', 'app/assets/javascripts/src/libs/underscore.js'],
        template: require('grunt-template-jasmine-requirejs'),
        host: "http://localhost:3000"
      }

我每次都会收到超时错误。在Grunt上下文中没有人真正解决过这个问题,所以我不确定故事是什么,我没有运行异步测试。如果我离开主机,它会成功运行测试,但仅通过本地文件系统的原始javascript文件,而不是通过本地网络。如何配置模板以允许Jasmine测试在不同的主机上运行?

更新:

实际上,看起来Grunt实际上并没有针对本地服务器进行轮询,它只是挂起并超时。

1 个答案:

答案 0 :(得分:6)

您需要使用grunt-contrib-connect

启动本地服务器

在您的配置中指定:

grunt.initConfig({
  connect: {
    server: {
      options: {
        port: 3000
      }
    }
  }  
});    

添加到别名任务:

grunt.registerTask("default", ["connect", "your-jasmine-task"]);

并运行它:

$ grunt default