Я тестирую контроллер, у которого есть метод, который возвращает объект json с моего сервера. Я действительно смущен тем, как оправдывать то, что возвращает мой метод.
Мне нужно сделать некоторую очистку моего объема на основании результатов.
То, что я пытаюсь выполнить, - это поиск по вызову() -> посмотреть, какие данные возвращаются -> и если длина == 0 -> убедитесь, что моя область имеет определенные значения. Как я могу проверить, что мой метод вернулся?
$scope.clearIds = function(){
//clean out data I don't need anymore
}
$scope.search = function(inputValue, modelname, action, field){
modelname = modelname || 'companies';
action = action || 'search';
field = field || 'title';
return apiResource.query({api_resource:modelname, api_action:action, api_column:field, api_value:inputValue}).$promise.then(function(response){
if(response.data.length === 0){
$scope.clearIds();
}
else{
return response.data;
}
});
}
describe('Controller - TypeaheadSearch', function() {
// load the controller's module
beforeEach(module('app'));
var scope;
var apiResource;
var stateParams;
var q;
var deferred;
var rootScope;
// Initialize the controller and a mock scope
beforeEach(inject(function ($controller, $rootScope, $q) {
apiResource = {
query: function() {
deferred = $q.defer();
deferred.resolve('bar');
return deferred.promise;
}
};
scope = $rootScope.$new();
stateParams = {};
q = $q;
rootScope = $rootScope;
$controller('TypeaheadSearch', {
$scope: scope,
$stateParams:stateParams,
apiResource: apiResource,
});
}));
it('Should call apiResource:query', function() {
spyOn(apiResource, 'query').and.callThrough();
scope.search();
rootScope.$apply();
expect(apiResource.query).toHaveBeenCalled();
});
});
Более проще вы можете просто сделать 'apiResource = jasmine.CreateSpyObj ('apiresource', [ 'запрос']); apiResource.query.and.returnValue ($ q.when (expectedQueryValue)); ' – PSL