我尝试使用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.module
和window.inject
并失败。
我试图预先包含我自己的Jasmine版本和一个&#34; bootloader&#34;使其初始化,这实际上解决了module
和inject
没有被定义的问题,但在那里引发了一大堆错误。
答案 0 :(得分:0)
虽然您已包含所有参考注释,但它们将在设计时解决所有类型检查和自动完成要求;您还需要记住在运行时添加所有脚本,例如,按照正确的顺序在网页中包含所有脚本标记。
你可能会发现
<script>
标记,或答案 1 :(得分:0)