我有一个简单的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
!在这些情况下,测试运行器浏览器确实显示它正在尝试运行测试,但它永远不会完成:
它永远保持这样。在此挂起期间,我的应用 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'
};
答案 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/);
抱歉添加了额外的内容(在第一个例子中