来自karma e2e测试跑步者的结果不一致。我怎么调试?

时间:2013-08-03 14:44:00

标签: node.js angularjs requirejs karma-runner

我有一个简单的angular / requirejs / node项目,从浏览器查看时可以正确加载。我正试图通过设置业力来进行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!在这些情况下,测试运行器浏览器确实显示它正在尝试运行测试,但它永远不会完成:

It just stays like this forever

它永远保持这样。在此挂起期间,我的应用 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'
};

1 个答案:

答案 0 :(得分:0)

您在页面上有多少个锚标签?

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

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

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

编辑:

应该是

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

抱歉添加了额外的内容(在第一个例子中