在VS 2015中使用jasmine和chutzpah单元测试打字稿

时间:2016-12-30 02:59:32

标签: angularjs unit-testing typescript jasmine chutzpah

我是单位测试中的新手,我正在使用带有打字稿的angularjs。对于单元测试,我使用jasmine和chutzpah,但我遇到错误" ReferenceError:找不到变量:angular "

测试文件,例如

//File:test.ts
///<chutzpah_reference  path="../Scripts/angular.js"/>
///<chutzpah_reference  path="../Scripts/angular-mocks.js"/>
///<chutzpah_reference  path="../Scripts/jasmine/jasmine.js"/>
///<reference path="../scripts/typings/angularjs/angular.d.ts"/>
///<reference path="../scripts/typings/angularjs/angular-mocks.d.ts"/>
///<reference path="../scripts/typings/jasmine/jasmine.d.ts"/>
///<reference path="../controller/testController.ts"/>

module app {
    describe("testwithjasmine", () => {
        var testController: Testcontroller;
        beforeEach(()=> {
            testController = new Testcontroller();
        })
        //This test OK
        it("Test controller", () => {
            expect(testController.tilte).toBe("title");
        })
    })

    //Error with case below
    describe("testInject", () => {
        var scope, controller;
        beforeEach(angular.mock.module("app"));
        beforeEach(() => inject(($controller, $scope) => {
            scope = {};
            controller = $controller('testController', { $scope: scope });
        }));
        it("test contrller2", () => {
            expect(scope.title).toEqual("title");
        })
    })
}

chutzpah.json内容

{
"Compile": {
    "Mode": "External",
    "Extensions": [".ts"],
    "ExtensionsWithNoOutput": [".d.ts"]
   },
  "References": [
    {
      "Includes": [
        "*/Controller/*.ts"
      ],
      "Excludes": [
        "*/Scripts/typings/jasmine/*.d.ts",
        "*/scripts/typings/angularjs/*.d.ts"
      ]
    }
  ],
  "Tests": [
    {
      "Includes": [ "*/Test/*.ts" ],
      "Excludes": [
        "*/Scripts/Tests/*.d.ts"
      ]

    }
  ]
}

有什么建议吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

当您的测试用typescript编写时,

chutzpah_reference不起作用(返回空内容)。

我最终在一个单独的Web应用程序(比如localhost:9090)中托管我的* .js文件,还创建了自定义harnass文件(VS&gt; R#&gt;选项&gt;工具&gt;单元测试&gt; JavaScript测试)并添加了脚本标记以包含库脚本。

<script src="http://localhost:9090/lib/angular.js" ></script>

任何使用R#的尝试都失败了,例如由于各种各样的限制,普通人不会工作(甚至帮助你使用自定义哈纳斯)。

我在VS中知道的最好的替代方案(但没有R#)是使用包含所有脚本的自定义html文件并手动托管文件。

就我个人而言,我正在寻找其他不需要resharper甚至VS的替代品。