9

我在互联网上搜索了我正在尝试做的事情的描述,但无济于事。我想为我正在构建的 Web 前端进行单元测试,该前端通过使用本地主机中的 PhantomJS 加载它直接在生产代码上运行。在加载真实站点并与 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 实际上并没有对本地服务器进行轮询,它只是挂起并超时。

4

1 回答 1

6

您需要使用grunt-contrib-connect启动本地服务器

在您的配置中指定:

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

添加到别名任务:

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

并运行它:

$ grunt default
于 2013-04-08T13:33:03.820 回答