Jasmine Karma。在特定数量的测试(页面重新加载错误)后测试失败

时间:2016-02-26 12:00:22

标签: unit-testing jasmine karma-jasmine page-refresh

我正在使用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",

这是我的业力和相关依赖的版本。

2 个答案:

答案 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();

通过这种方式,您无需导航和刷新页面即可触发点击。