我的控制器做了类似下面的事情:
.controller('demo',function($scope,$state, $modal,$q, Resource1, Resource2) {
function1(){
var deferred = $q.defer();
Resource1.get(function(result){
$scope.player = result;
deferred.resolve(promise);
});
return deferred.promise;
}
function2() { /* similar to function1. It also returns a promise */ }
$q.all(function1(),function2(),function(result){
});
});我迫使自己sofar...beyond这我是一种迷失。首先,我想知道我的初始化是否正确,其次,我想知道如何编写单元测试来测试function1()是否被调用,以及Resource1在那之后是否被调用。这就是我到目前为止所知道的:
describe('demo',function(){
beforeEach(function(){
$rootScope = $injector.get('$rootScope');
$controller = $injector.get('$controller');
$httpBackend = $injector.get('$httpBackend');
q = $injector.get('$q');
state = $injector.get('$state');
});
createController = function(){
return $controller('demo',{
$scope: $rootScope.$new(),
$state: state,
$modal: sinon.stub({}),
$q: q,
Resource1: mockResource1, /*how and where to initialize mock Resources */
Resource2: mockResource2,
});
} //end beforeEach
it('should check that func1 was called',function(){
spyOn(this,'function1');
var controller = createController();
expect(this.function1).toHaveBeenCalled();
});
it('should check that Resource1.get as called',function(){
// how to formulate the test here
});
});发布于 2015-04-18 00:38:16
我认为function1是一个存在于控制器作用域内的函数。你不能“触摸”它,所以你不能“监视”它。
https://stackoverflow.com/questions/24293586
复制相似问题