使用ReSharper进行AngularJS单元测试
使用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中定义(我已经引用了它),所以我不确定问题出在哪里。
有什么建议吗?
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单元测试的兼容性问题。如果你遇到了类似的问题,可以尝试这些解决方法来解决。此外,你也可以在链接中投票支持该问题的修复。