行, 所以我试图首次在Angular JS项目上开始使用Jasmine进行单元测试,我正在尝试几个路障。
我正在关注如何set this all up in Visual Studio
的博文中非常好的参考我的测试是在类库项目中,看起来像这样: -
/// <reference path="../../../../src/tasks.web/scripts/angular-1.2.10.js" />
/// <reference path="../../../../src/tasks.web/scripts/angular-route-1.2.10.js" />
/// <reference path="../../../../src/tasks.web/scripts/app.js" />
/// <reference path="../../../../src/tasks.web/scripts/controllers.js" />
/// <reference path="../lib/angular/angular-mocks.js" />
describe("TaskListController", function () {
beforeEach(module('taskApp.controllers'));
it("has tasks defined", function() {
var $scope = {};
$controller("TaskListController", { $scope: $scope });
expect($scope.tasks).toBeDefined();
});
});
我的应用程序的其余部分如下所示: -
app.js
var app = angular.module("taskApp", [
"ngRoute",
"appControllers"
]);
app.config(["$routeProvider",
function($routeProvider) {
$routeProvider.
when("/tasks", {
templateUrl: "partials/task-list.html",
controller: "TaskListController"
}).
otherwise({
redirectTo: "/tasks"
});
}
]);
controller.js
var appControllers = angular.module("appControllers", []);
appControllers.controller("TaskListController", function ($scope) {
$scope.tasks = {};
});
所有引用的文件都在那里(没有404)。 Visual Studio找到测试并运行它,但我得到ReferenceError: Can't find variable: $controller
感谢任何帮助,因为我知道我真的很接近这个工作,我知道这只是一件我想念的简单事。
答案 0 :(得分:5)
您需要注入$controller
。一种方法是:
it("has tasks defined", inject(function($controller) {
var $scope = {};
$controller("TaskListController", { $scope: $scope });
expect($scope.tasks).toBeDefined();
}));
您还需要在beforeEach
所以你需要做以下事情: -
beforeEach(module('appControllers'));