【发布时间】: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