jasmine と angularJS を使用してコードをテストする方法を理解しようとしています。コントローラーと挿入されたサービスを使用してテスト プロジェクトを作成しました。今、私はコントローラーをテストしたいので、注入されたサービスをモックしようとしました。しかし、コントローラーから「Arrived」機能をテストする方法が見つかりませんでした。これが私のjsfiddleです:http://jsfiddle.net/2fwxS/
コントローラー.js:
angular.module('myApp.controllers', [])
.controller('MyCtrl', ['$scope', 'MyService', function ($scope, MyService) {
$scope.User = {};
$scope.HasUserArrived = false;
$scope.Arrived = function(firstname, lastname) {
$scope.HasUserArrived = MyService.Arrive(firstname, lastname);
return $scope.HasUserArrived;
}
}]);
services.js:
var myApp = angular.module('myApp.services', []).
value('version', '0.1');
myApp.factory('MyService', [function () {
return {
HasArrived: false,
Arrive: function (firstname, lastname) {
this.HasArrived = false;
if (firstname && lastname) {
this.HasArrived = true;
}
console.log("User has arrived: " + this.HasArrived);
return this.HasArrived;
}
}
}]);
$provide が正しい解決策である可能性がある同様の説明をいくつか見つけました (このような角度コントローラーとサービスのジャスミン テストを作成するにはどうすればよいですか? ) または createSpy (関数である Angular サービスをどのようにモックしますか? ) しかし、できませんでした。 $provider.factory または $provider.value が必要な場合、または createSpy を使用する必要がある場合を理解するには?
誰かが違いを理解し、私の jsFiddle ( http://jsfiddle.net/2fwxS/ ) の例で非アクティブ化されたコードを取得して実行するのを手伝ってくれれば幸いです...