我正在使用karma jasmine测试一个角度应用程序,我有大约10个spec文件,共有10个描述和48个测试用例。问题是,每当测试用例超过47时我都会收到错误,错误说,有些测试会重新加载整页。我尝试通过评论随机测试用例并限制为47,然后它工作正常。即使是空白的第48个测试用例也会出错,
"jasmine-core": "^2.4.1",
"jshint-stylish": "^1.0.0",
"karma": "^0.13.21",
"karma-chrome-launcher": "^0.2.2",
"karma-coverage": "^0.5.3",
"karma-firefox-launcher": "^0.1.7",
"karma-jasmine": "^0.3.7",
"karma-ng-html2js-preprocessor": "^0.2.1",
"karma-phantomjs-launcher": "^1.0.0",
这是我的业力和相关依赖的版本。
答案 0 :(得分:1)
它与您的一个或多个测试重新加载有关。不幸的是,Karma没有告诉你哪个。
以下是此issue的解决方案。
1)在其他任何内容之前使用以下代码运行您的应用程序,并打开DevTools(在本例中为Chrome)。
console.profile('cause of reload');
window.addEventListener('beforeunload', function() {
console.profileEnd('cause of reload');
debugger;
});
如果您正在寻找重新加载,那么您应该转到Chrome Devtools的“来源”视图,并在调试器行暂停该应用。
2)导航到“个人资料”标签,然后选择“图表”视图。
3)Command + F并搜索“location”。
4)使用搜索框中的向上和向下箭头跳转到该短语的最后一次匹配。
5)点击在搜索栏中输入以跳转到匹配。
6)回顾一下您识别的代码的调用堆栈。
归功于JamieMason
答案 1 :(得分:0)
我只是使用带有 href 的锚标记,但因为重新加载它也会失败,并且“您的某些测试重新加载了整个页面!”。我想测试一个在点击过程中被调用的函数,所以这是我在测试中的解决方案:
const link = fixture.debugElement.query(By.css('a'));
link.triggerEventHandler('click', null);
问题在于:
link.click();
通过这种方式,您无需导航和刷新页面即可触发点击。