我正在使用 VS2013 进行编程,并且想在我的 AngularJs 控制器上进行单元测试。例如,我有一个 taController.js,它看起来像:
var module = angular.module("MyApp", []);
var TAController = ["$scope",
function ($scope) {
$scope.myNumber = 2;
$scope.add = function (number) {
$scope.myNumber = $scope.myNumber + number;
};
}];
一个使用这个的 HTML 页面看起来像:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" data-ng-app="MyApp">
<head>
<title></title>
<script src="Scripts/angular.js"></script>
<script src="Scripts/taController.js"></script>
</head>
<body>
<div id="myDiv" data-ng-controller="TAController">
{{myNumber}}<br />
<a href="" ng-click="add(2)">Add 2</a><br />
</div>
</body>
</html>
我想使用 Jasmine 和 Chutzpah 创建一个单元测试。我在我的测试项目的 specs 目录中创建了一个 AngularTest.js,看起来像这样
/// <reference path="../scripts/jasmine.js" />
/// <reference path="../../unittestingwithjasmine/scripts/tacontroller.js" />
describe("My Tacontroller", function () {
var element;
var myScope;
beforeEach(inject(function($scope) {
myScope = $scope;
}));
it("should be able to add 2 plus 2", function () {
myScope.add(2)
expect(myScope.myNumber).toBe(4);
});
});
我认为上面的代码有很多错误。第一个是测试失败——我的 Tacontroler 遇到了声明异常。消息:RefferenceError:找不到 cariable:注入文件:///C....../specs/angulaertest.js(第 10 行)
我的问题是如何编写我的 AngularTest.js 以通过在我的 Tacontroller 上添加功能来正确测试