Karma / Mocha测试间歇性地导致Chrome中的整页重新加载

时间:2015-07-21 16:59:07

标签: javascript angularjs karma-runner karma-mocha

我有一个用Karma和Mocha测试的Angular项目单元。间歇性地(大约每9到10次运行中有一次)测试在Chrome中失败并显示消息:

  

Chrome 43.0.2357(Mac OS X 10.10.2)错误

     

您的部分测试会重新加载整页!

它似乎只发生在Chrome上(也在Firefox和PhantomJS上测试)。该项目使用mocha,chai和sinon框架,以及ng-html2js预处理器,用于将模板编译为角度模块。

我正在我的Karma配置中加载所有JS和部分:

// list of files / patterns to load in the browser
files: [
  'bower_components/angular/angular.js',
  'bower_components/angular-mocks/angular-mocks.js',
  'bower_components/angular-resource/angular-resource.js',
  'bower_components/angular-route/angular-route.js',
  'bower_components/jquery/dist/jquery.js',
  'app.js',
  'controllers/*.js',
  'services/*.js',
  'directives/*.js',
  'partials/*.html'
],

错误似乎没有归因于任何特定的测试,因为我只使用返回资源的服务运行它,并且仍然间歇性地抛出错误。我已经看到其他类似的问题要求专门处理ui-router框架,但我没有使用它(简单地使用ngRoute进行路由),而且我还加载了没有路由代码的测试(从karma.conf中取出它)。 js)并且仍然遇到问题。

我运行了一个不使用$ location,$ window或任何其他尝试重新加载页面但仍然遇到问题的服务的测试。

框架中是否有任何可能导致这些问题的配置?任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

这样的事情可能很难找到,但您可以通过以下步骤找出此问题的原因。

1)在其他任何内容之前使用以下代码运行您的应用程序,并打开DevTools(在本例中为Chrome)。

console.profile('cause of reload');

window.addEventListener('beforeunload', function() {
  console.profileEnd('cause of reload');
  debugger;
});
  

如果您正在寻找的重新加载即将发生,您应该被带到"来源"应用暂停在debugger行暂停Chrome DevTools的视图。

2)导航到"个人资料"标签

3)从左侧导航栏中选择我们创建的个人资料。

4)选择"图表"从顶部的下拉菜单中查看。

5)输入Command + F(或Windows上的Ctrl + F)并搜索" location"。

6)使用搜索框中的向上和向下箭头跳转到该短语的最后匹配。

5)点击在搜索栏中输入以跳转到匹配。

5)回顾一下您识别的代码的调用堆栈。

答案 1 :(得分:0)

据我所知,这是一个已知的Karma错误:https://github.com/karma-runner/karma/issues/1101