0

我一直在和 Intern 一起玩,并让我的测试在浏览器中运行。为了更好地与我当前的工作流程集成,我正在尝试通过带有 phantomjs 的 grunt 运行我的测试。然而我所有的尝试都失败了。我一直将这个问题作为Intern WebDriver 和 PhantomJS的参考,但无法弄清楚使其工作的所有步骤。

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

一点信息:

  • 我不想/不能连接到 Sauce Labs 或 Selenium 测试环境。
  • 我想测试浏览器代码,同时将 jQuery 作为填充依赖项
  • 我安装了 Grunt 0.4.1 和 phantomjs 1.9.1
  • 我没有测试任何 ajax 请求(因为链接的问题有问题)
  • 我对 Selenium 和 Sauce Lab 都不熟悉

如果可以通过 grunt 和 phanomjs 进行测试,我将如何去做呢?

我想我必须启动 GhostDriver

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?我已经尝试了具有不同版本和平台的 browserNames 'phantom' 和 'phanomjs'(运行 Mac 10.7)

我的实习生 Gruntfile 部分如下所示:

intern: {
    phantom: {
        options: {
            config: 'tests/intern',
            reporters: ['webdriver']
        }
    }
}

在没有任何包含浏览器代码输出 ' ReferenceError: document is not defined' in ' node_modules/intern/lib/reporters/webdriver.js:41:19' 的测试套件的情况下运行此设置

添加浏览器测试会ReferenceError: window is not defined在 ' ' 中提供 ' src/vendor/jquery/jquery-1.9.1.js:9597:5'

通过节点运行它会产生相同的“ window is not defined”错误。

node node_modules/intern/client.js config=tests/intern

我在这里做错了什么/错过了什么?

4

1 回答 1

2

您的 Gruntfile 配置存在两个问题:

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

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

于 2013-06-27T15:22:12.590 回答