【问题标题】:Karma/Mocha tests intermittently cause full page reload in ChromeKarma/Mocha 测试间歇性地导致 Chrome 中的整个页面重新加载
【发布时间】:2016-08-30 02:53:48
【问题描述】:

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

Chrome 43.0.2357 (Mac OS X 10.10.2) 错误

您的一些测试重新加载了整个页面!

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

我正在我的 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 或任何其他会尝试重新加载页面但仍然遇到问题的服务的测试。

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

【问题讨论】:

    标签: javascript angularjs karma-runner karma-mocha


    【解决方案1】:

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

    1) 使用以下代码运行您的应用程序,然后打开 DevTools(在本例中为 Chrome)。

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

    如果您要查找的重新加载即将发生,您应该转到 Chrome DevTools 的“源”视图,应用在 debugger 行暂停。

    2) 导航到“配置文件”选项卡。

    3) 从左侧导航中选择我们创建的配置文件。

    4) 从顶部的下拉菜单中选择“图表”视图。

    5) 输入 Command+F(或 Windows 上的 Ctrl+F)并搜索“位置”。

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

    5) 在搜索字段中按回车键跳转到匹配项。

    5) 回顾调用堆栈以查找您识别的代码。

    【讨论】:

    • 当您说“在其他任何内容之前包含以下代码”时,您的具体意思是什么?
    • 在任何其他 JavaScript 代码行之前,因此 sn-p 是第一个被执行的。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-17
      相关资源
      最近更新 更多