通过Grunt和Phantomjs使用Intern测试浏览器代码

通过Grunt和Phantomjs使用Intern测试浏览器代码,phantomjs,intern,Phantomjs,Intern,我一直在和实习生一起玩,让我的测试在浏览器中运行。为了更好地与我当前的工作流程集成,我正在尝试通过grunt和phantomjs运行测试。然而,我所有的尝试都失败了。我一直在考虑这个问题作为参考,但不能找出所有的步骤,使其工作 首先:甚至可以通过grunt和phantomjs运行测试吗 一点信息: 我不想/无法连接到酱油实验室或硒测试环境 我想在将jQuery作为填充依赖项的同时测试浏览器代码 我已经安装了Grunt 0.4.1和phantomjs 1.9.1 我没有测试任何ajax请求(因为

我一直在和实习生一起玩,让我的测试在浏览器中运行。为了更好地与我当前的工作流程集成,我正在尝试通过grunt和phantomjs运行测试。然而,我所有的尝试都失败了。我一直在考虑这个问题作为参考,但不能找出所有的步骤,使其工作

首先:甚至可以通过grunt和phantomjs运行测试吗

一点信息:

  • 我不想/无法连接到酱油实验室或硒测试环境
  • 我想在将jQuery作为填充依赖项的同时测试浏览器代码
  • 我已经安装了Grunt 0.4.1和phantomjs 1.9.1
  • 我没有测试任何ajax请求(因为链接的问题有问题)
  • 我对硒和酱油实验室都不熟悉
如果可以通过grunt和phanomjs进行测试,我将如何进行测试

我想我得启动幽灵司机了

phantomjs --webdriver=8910
但是,实习生配置中有哪些重要的信息可以让这项工作顺利进行呢

define({
  proxyPort: 9000,
  proxyUrl: 'http://localhost:9000/',
  environments: [
    {
      browserName: 'phantom',
      version: '1.9.0',
      platform: 'Linux'
    }
  ],
  webdriver: {
    host: 'localhost',
    port: 8910
  },
  maxConcurrency: 3,
  useSauceConnect: false,
  // ...
});
环境browserName如何映射到phantomjs?我试过浏览器名“phantom”和“PhantomJS”,它们有不同的版本和平台(运行Mac 10.7)

我为实习生准备的Grunfile部分如下所示:

intern: {
    phantom: {
        options: {
            config: 'tests/intern',
            reporters: ['webdriver']
        }
    }
}
在没有任何包含浏览器代码输出的测试套件的情况下运行此安装程序 “
ReferenceError:文档未在”
node\u modules/intern/lib/reporters/webdriver.js:41:19
中定义”

添加浏览器测试会在“
src/vendor/jquery/jquery-1.9.1.js:9597:5
”中给出“
ReferenceError:window未定义”

通过节点运行它会出现相同的“
未定义窗口”错误

node节点\u模块/intern/client.js config=tests/intern


我在这里做错了什么/遗漏了什么?

您的GrunFile配置有两个问题:

  • Grunt任务的默认运行类型是“client”,这意味着它默认运行Node.js客户端,而不是测试运行程序。您需要在GrunFile选项中设置
    runType:“runner”
    ,以针对指定的环境运行测试
  • webdriver
    仅在浏览器客户端中使用,并在需要时由测试运行程序自动指定。您通常不应该直接使用它。您在Gruntfile中指定的报告器应该是您希望测试运行程序使用的报告器;
    控制台
    默认值通常是合适的

  • 这两件事结合在一起意味着您已将Intern配置为尝试使用仅在浏览器中与Node.js客户端内的测试运行程序结合使用的报告程序,因此会出现错误。更正后,剩余的配置应能正常工作以在PhantomJS上运行,假设它已经在本地主机上的端口8910上运行。

    Thx以澄清运行类型。将
    runType
    更改为
    runner
    并删除
    reporters:['webdriver']
    语句使我更进一步。现在我得到:
    在mac-10.7(Lion)-32位上收听0.0.0.0:9000初始化的phantomjs 1.9.1。但是,我的所有测试都没有运行。如何指示phantomjs运行测试套件?我是否必须在我的套件启动/拆卸中编写customReporter或任何特定于phantomjs的说明?我猜client.html需要以某种方式被引用?在这一点上,您的测试应该自动运行,除非其中一个测试中存在阻止加载它们的错误。请尝试检查PhantomJS控制台输出以了解更多信息。是否有此更新?我目前正在尝试做一些类似的事情,并获得“ECONNREFUSED”:(grunt任务是否会自动运行phantom,或者我是否需要另一个任务来执行此任务?(是否有一个演示正确配置的样板文件?)@CSnover如果在运行Grunt任务之前尝试手动运行Phantom,我会收到错误“警告:错误:getaddrinfo ENOTFOUND”。是否有方法告诉Grunt在任务运行时启动Phantom,并在任务完成时停止它?