私はJasmine/AngularJSユニット初心者テストです。 2つの数字を追加するための簡単な角型アプリを作成し、角型アプリケーションの単体テストの作成方法を学ぶことができます。 Angular Doc on unit test is incomplete。ブログとスタックオーバーフローの回答に基づいて、私は最初のテストを構築し、私は 'injector'の未定義エラーに遭遇しています。私はユニットテストのためにJasmineフレームワークを使用しています。
HTMLジャスミンを角度で使用しているときに定義されていないエラーが「注入」されるのはなぜですか?
<body>
<div ng-controller="additionCtrl">
First Number: <input ng-model="NumberOne"/><br/>
Second Number: <input ng-model="NumberTwo"/>
<button ng-click="add(NumberOne, NumberTwo)">Add</button><br/>
Result: {{Result}}
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular.min.js"></script>
<script src="Scripts/additionCtrl.js"></script>
</body>
コントローラー:
function additionCtrl($scope) {
$scope.NumberOne = 0;
$scope.NumberTwo = 0;
$scope.Result = 0;
$scope.add = function (a, b) {
};
}
ジャスミンspecファイル。
describe("Addition", function() {
var $scope, ctrl;
beforeEach(inject(function ($rootScope, $controller) {
this.scope = $rootScope.$new();
ctrl = $controller('additionCtrl', {
$scope: this.scope
});
}));
it("should add two integer numbers.", inject(function ($controller) {
expect(ctrl.add(2, 3)).toEqual(5);
}));
});
Specrunner.html
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular.min.js"></script>
<script type="text/javascript" src="lib/angular-mocks.js"></script>
<script type="text/javascript" src="lib/jasmine-1.3.1/jasmine.js"></script>
<script type="text/javascript" src="lib/jasmine-1.3.1/jasmine-html.js"></script>
<!-- include source files here... -->
<script type="text/javascript" src="../App/Scripts/additionCtrl.js"></script>
<!-- include spec files here... -->
<script type="text/javascript" src="spec/addition.spec.js"></script>
これが失敗するテストで、テストが期待された結果で失敗したら、私はそれが通過するためにコードを変更することができますが、私は何とかして問題に直面しています角のモックがインジェクタを得ていない。
私は、インジェクタを使用する代わりにコントローラを新しくすることができる例を見ましたが、私はより複雑なテストをセットアップするためにインジェクタを使用することを学びたいと思います。
私はここで簡単な何かが欠けているかもしれません。私が逃した可能性のある書面に私を導いてください。
ありがとう
これは私がいくつかの時間を探していたものです:) – Nair