使用Resharper运行AngularJS测试

时间:2014-06-27 12:57:53

标签: angularjs resharper typescript

我尝试使用Visual Studio在Typescript中实现AngularJS应用程序。样本控制器正常工作,现在我正在尝试编写并运行一些测试。当我创建与Angular无关的测试(例如,1+1 == 2)时,它运行正常。但是,测试控制器功能似乎不起作用。

这是我的tests.ts文件:

/// <reference path="../scripts/typings/jasmine/jasmine.d.ts"/>
/// <reference path="../scripts/typings/angularjs/angular.d.ts" />
/// <reference path="../scripts/typings/angularjs/angular-mocks.d.ts" />
/// <reference path="../scripts/typings/angularjs/angular-scenario.d.ts" />
/// <reference path="../app/scripts/controllers.ts"/>

'use strict';

describe("Unit controllers", () => {

    beforeEach(() => module("thisApp"));

    describe("Sample Controller", () => {

        var scope: ISampleScope;
        var ctrl;

        beforeEach(
            function() {
                inject(
                    function($rootScope: ng.IRootScopeService, $controller: ng.IControllerService) {
                        scope = <ISampleScope> $rootScope.$new();
                        ctrl = $controller('SampleCtrl', { $scope: scope });
                    }
                );
            });

        it("should have a message", () => {
            expect(element("#msg").text()).toBe("Hello");
        });

    });
})

运行此示例时,我有3个错误:

ReferenceError: module is not defined
ReferenceError: inject is not defined
ReferenceError: element is not defined

我为所有引用的文件添加了*.d.js个文件,以便它们自动添加到源代码中,但它没有帮助。

我在R#设置中的Jasmine版本是。在所有浏览器和Phantom.JS中尝试过 - 结果同样不成功。

有没有人设法让这个工作?

修改

显然,R#在所有引用之后附加了Jasmine依赖这一事实,从而调用了这个问题。然后,angular-mocks.js检查window.jasmine以尝试注册window.modulewindow.inject并失败。

我试图预先包含我自己的Jasmine版本和一个&#34; bootloader&#34;使其初始化,这实际上解决了moduleinject没有被定义的问题,但在那里引发了一大堆错误。

2 个答案:

答案 0 :(得分:0)

虽然您已包含所有参考注释,但它们将在设计时解决所有类型检查和自动完成要求;您还需要记住在运行时添加所有脚本,例如,按照正确的顺序在网页中包含所有脚本标记。

你可能会发现

  1. 您缺少Angular的<script>标记,或
  2. 您已将放在测试脚本
  3. 之后

答案 1 :(得分:0)

原来这是Resharper中的一个错误,它已经修复了:

http://youtrack.jetbrains.com/issue/RSRP-412388

更新到8.2.1解决了我的问题。