【问题标题】:Inconsistent results from karma e2e test runner. How can I debug?karma e2e 测试运行器的结果不一致。我该如何调试?
【发布时间】:2013-08-03 14:43:59
【问题描述】:

我有一个简单的 angular / requirejs / node 项目,从浏览器查看时可以正确加载。我正在尝试设置 karma 进行 e2e 测试。

我已将 the angular-require-js seed 中的所有 e2e 配置和目录结构复制到我自己的项目中。不幸的是,我自己项目中的测试给出了奇怪的(并且不断变化的!)结果。这是我正在尝试运行的精简测试:

describe('My Application', function() {
    beforeEach(function() {
        browser().navigateTo('/');
        sleep(0.5);
    });

    it('shows an "Ask a Question" button on the index page', function() {

        expect(element('a').text()).toBe('Ask a Question');

    });
});

有时测试会失败

Executed 1 of 1 (1 FAILED) (0.785 secs / 0.614 secs)

Firefox 22.0 (Mac) My Application shows an "Ask a Question" button on the index page FAILED
element 'a' text
http://localhost:9876/base/test/lib/angular/angular-scenario.js?1375035800000:25397:     Selector a did not match any elements.

(但页面上有 a 元素!)

有时测试会挂起

Executed 0 of 0!在这些情况下,测试运行器浏览器确实显示它正在尝试运行测试,但它从未完成:

它永远保持这种状态。我的应用IS在此挂起期间显示在浏览器中。

没有element('a') 它总是通过

获得一致结果的唯一方法是避免使用element()。如果我期望(true).toBe(true),那么 1 中的 1 测试总是通过。

如何调试?

我不知道如何前进。测试浏览器正确显示我的应用程序,以及相关的“a”元素和所有内容。测试运行器本身似乎只是有时会意识到它应该运行某些东西并且永远不会找到a 元素。有没有办法逐步完成测试运行过程?这是 [x] 配置错误时发生的常见问题吗?

感谢您的任何建议!

karma-e2e.conf.js

basePath = '../';

files = [
  'test/lib/angular/angular-scenario.js',
  ANGULAR_SCENARIO_ADAPTER,
  'test/e2e/**/*.js'
];

autoWatch = false;

browsers = ['Firefox'];

singleRun = true;

proxies = {
  '/': 'http://localhost:3000/'
};

urlRoot = "__karma__";

junitReporter = {
  outputFile: 'test_out/e2e.xml',
  suite: 'e2e'
};

【问题讨论】:

  • 您是否尝试过此处发布的解决方案? stackoverflow.com/questions/16304145/…
  • 我没有看到这个问题,谢谢!不幸的是,我认为我的问题有所不同。测试浏览器每次都会启动,我没有收到有关缺少可执行文件的投诉。我也一直在全球安装 karma。
  • 也许改用 Chrome 或 phantomjs

标签: node.js angularjs requirejs karma-runner


【解决方案1】:

页面上有多少个锚标签?

您可能没有引用您期望的实际锚点。将 id 标签添加到锚点并再次测试。如果它是页面中唯一的锚标记,请尝试匹配文本而不是期望它是。即:

expect((element('#anchor-tag-id').text()).toMatch(/Ask a question/);

如果您使用 chrome 打开 a 元素上的开发工具来检查实际值,这可能会有很大帮助。

编辑:

应该是

expect(element('#anchor-tag-id').text()).toMatch(/Ask a question/);

抱歉添加了额外的(在第一个示例中

【讨论】:

  • 感谢您的来信。不幸的是,在最好的情况下没有选择锚元素,而在最坏的情况下,测试就不会运行。您认为您的更改会影响其中任何一个问题吗?
  • 我发现由于代码中的拼写错误,测试无法运行。在为预期添加测试时,您是否只看到顶部横幅?
猜你喜欢
  • 1970-01-01
  • 2020-08-26
  • 1970-01-01
  • 2019-02-17
  • 1970-01-01
  • 2013-09-08
  • 2015-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多