我是单位测试中的新手,我正在使用带有打字稿的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"
]
}
]
}
有什么建议吗? 谢谢!
答案 0 :(得分:0)
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的替代品。