Javascript 引用错误:Can';找不到变量:$controller
嗯, 所以我第一次尝试在Angular JS项目上使用Jasmine开始单元测试,我遇到了一些障碍 我在这篇博客文章中很好地引用了关于如何 我的测试在类库项目中,如下所示:-Javascript 引用错误:Can';找不到变量:$controller,javascript,angularjs,testing,visual-studio-2012,jasmine,Javascript,Angularjs,Testing,Visual Studio 2012,Jasmine,嗯, 所以我第一次尝试在Angular JS项目上使用Jasmine开始单元测试,我遇到了一些障碍 我在这篇博客文章中很好地引用了关于如何 我的测试在类库项目中,如下所示:- /// <reference path="../../../../src/tasks.web/scripts/angular-1.2.10.js" /> /// <reference path="../../../../src/tasks.web/scripts/angular-route-1.2.10.
/// <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();
});
});
controller.js
var appControllers = angular.module("appControllers", []);
appControllers.controller("TaskListController", function ($scope) {
$scope.tasks = {};
});
所有引用的文件都在那里(没有404)。Visual Studio发现测试正常并运行它,但是我得到ReferenceError:找不到变量:$controller
感谢您的帮助,因为我知道我真的很快就要让它工作了,我知道我缺少的只是一些简单的东西。您需要注入
$controller
。一种方法是:
it("has tasks defined", inject(function($controller) {
var $scope = {};
$controller("TaskListController", { $scope: $scope });
expect($scope.tasks).toBeDefined();
}));
此外,您还需要在每次
因此,您需要执行以下操作:-
beforeEach(module('appControllers'));
在测试中,控制器模块的名称具有不同的名称。'在每个(模块('taskApp.controllers')之前;'应改为“beforeach(模块('AppController'));”?谢谢,这还不够,但结合@Michael的建议解决了这个问题。
beforeEach(module('appControllers'));