プロミスを呼び出すスコープ関数のテストを書いています。プロミスが解決した後に設定されたスコーププロパティにアクセスしようとしています。ジャスミンで約束を呼び出すテストスコープ関数
これは基本的に私のコントローラ機能である:
スコープ関数を呼び出した後、私の$scope.message
がsettedされ、場合である私はかなりテストしたい
$scope.submitNewForm = function(){
Service.createUser($scope.user).then(function(result){
if (result){
$scope.message = 'success';
} else {
$scope.message = 'error';
}
$scope.$apply();
});
};
。
これまでのところ私は$q.defer()
を使用していくつかのテストをしたが、私は欠けているものに何の成功
beforeEach(inject(function ($controller, $rootScope, _Service_, $q) {
scope = $rootScope.$new();
Service= _Service_;
deferred = $q.defer();
UserController= $controller('UserController', {
$scope: scope
});
}));
it('should call Service.createUser and set a message', function(){
spyOn(Service, 'createUser').and.callFake(function() {
return deferred.promise;
});
scope.submitNewForm();
scope.$digest();
expect(scope.message).toBeDefined();
});
任意のアイデアを持っていませんでしたか?
答えのSiddharthに感謝します。私は今、 'Error:[$ rootScope:inprog] $ digestがすでに進行中であることを確認しています。これはおそらく私のpromiseコールバックの中で' $ scope。$ apply() 'を呼び出すためです。しかし、私は私の見解に変更を適用する必要があります。何かご意見は? – adolfosrs