【问题标题】:AngularJS unit testing with ReSharper使用 ReSharper 进行 AngularJS 单元测试
【发布时间】:2013-07-11 05:35:15
【问题描述】:

我正在尝试为使用 ReSharper 测试运行器运行的 AngularJS 控制器获取 Jasmine 单元测试,以便我可以在 VS 2012 中的一个地方运行我的客户端和服务器端测试。

我遇到了 ReSharper 测试运行程序失败并显示“不确定:测试未运行”消息的问题。使用 AngularJS Seed 项目附带的测试运行器可以正常运行相同的测试。

这是我的简单故障排除测试:

/// <reference path="~/Scripts/angular/angular.js"/>
/// <reference path="~/tests/test/lib/angular/angular-mocks.js"/>
/// <reference path="~/Scripts/app/controllers.js"/>

'use strict';

describe('controllers', function(){
  beforeEach(module('myApp.controllers'));

  it('should ....', inject(function() {
      expect(1).toEqual(1);
  }));
});

我怀疑这与我的引用有关,因为如果我删除对 inject 的调用,我的测试运行良好。但是,inject 是在 angular-mocks.js(我正在引用)中定义的,所以我不确定问题出在哪里。

有什么建议吗?

【问题讨论】:

    标签: angularjs resharper jasmine


    【解决方案1】:

    您对 ReSharper 被内联 inject 绊倒的预感是正确的,当它解析文件以获取测试列表时,它似乎期望 function 代替。我通过将injects 移动到beforeEachit 的主体来解决问题,这让ReSharper 再次高兴。顺便说一句,我还在顶部(在其他引用之前)添加了对 jasmine.js 的引用,以消除 ReSharper 关于未定义 Jasmine 全局变量的警告。

    【讨论】:

    • 你用的是什么版本的 Jasmine?
    【解决方案2】:

    在他们的跟踪器http://youtrack.jetbrains.com/issue/RSRP-383328 上存在关于此 ReSharper 问题的问题 - 您可以投票支持它进行修复。

    【讨论】:

      【解决方案3】:

      看看这个页面。我禁用了“正在测试的影子复制程序集”选项,它起作用了。 Test method is inconclusive: Test wasn't run. Error?

      【讨论】:

        【解决方案4】:

        ReSharper 在所有引用后设置文件 jasmine.js。 angular-mock.js 找不到 jasmine 会跳过创建 window.module 和 window.injec 函数

        我创建了 jasmine2.js 并将其设置为第一个参考。我确实清空了 jasmine.js 并将其设置为第二个参考。

        毕竟我的所有测试都成功了

        【讨论】:

          猜你喜欢
          • 2014-01-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-29
          • 1970-01-01
          • 1970-01-01
          • 2010-09-26
          • 2014-08-07
          相关资源
          最近更新 更多