使用ReSharper进行AngularJS单元测试

9 浏览
0 Comments

使用ReSharper进行AngularJS单元测试

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

我遇到了一个问题,ReSharper测试运行器失败,并显示消息“不确定:测试未运行”。相同的测试在AngularJS Seed项目附带的测试运行器中运行良好。

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

/// 
/// 
/// 
'use strict';
describe('controllers', function(){
  beforeEach(module('myApp.controllers'));
  it('should ....', inject(function() {
      expect(1).toEqual(1);
  }));
});

我怀疑这与我的引用有关,因为如果我删除对inject的调用,我的测试就能正常运行。然而,inject在angular-mocks.js中定义(我已经引用了它),所以我不确定问题出在哪里。

有什么建议吗?

0
0 Comments

AngularJS单元测试的一个问题是与ReSharper插件的兼容性。具体问题可以在他们的追踪器上找到,链接为http://youtrack.jetbrains.com/issue/RSRP-383328,你可以投票支持修复这个问题。

在这个链接中,我们可以看到一些关于该的问题和解决方法。下面是一些用户提供的解决方案:

- 一位用户建议在测试文件的顶部添加以下注释,以解决ReSharper导致的编译错误:

// ReSharper disable Html.PathError
// ReSharper disable Html.UnknownAttribute

- 另一位用户称,通过将测试文件的扩展名从.js更改为.ts(TypeScript)可以解决ReSharper的问题。

- 还有一种解决方法是在测试文件中使用特定的ReSharper指令,以告诉ReSharper如何正确解析代码。例如,可以使用以下指令:

// ReSharper disable Angular.NoCtrl
// ReSharper disable Angular.NoAngularAppModule

这些解决方法可能有助于解决ReSharper与AngularJS单元测试的兼容性问题。如果你遇到了类似的问题,可以尝试这些解决方法来解决。此外,你也可以在链接中投票支持该问题的修复。

0
0 Comments

问题的原因是ReSharper在解析文件以获取测试列表时,似乎期望使用function而不是内联的inject。为了解决这个问题,可以将inject移动到beforeEachit的主体中。此外,在引用其他文件之前,还可以在顶部添加对jasmine.js的引用,以消除ReSharper关于未定义Jasmine全局变量的警告。

请问你使用的是哪个版本的Jasmine?

0