단위 테스트 및 각도 1.2에 머리를 쓰기 시작했습니다. 서비스에서 $ httpcall을 테스트하기 위해 $ httpBackend 서비스를 사용하고 있습니다. 내가 엔드 포인트가 잘못된 경우에 대한 테스트를 작성하는 것을 시도하고있다
var app = angular.module('myApp', []);
app.controller('MainCtrl', function (someService) {
var vm = this;
vm.hasError = false;
//debugger;
someService.someAsyncCall()
.then(function (data) {
vm.hasError = false;
})
.catch(function (data) {
vm.hasError = true;
});
});
app.factory('someService', function ($http) {
return {
someAsyncCall: function() {
return $http.get("/data")
.success(function (data) {
//return true
})
.error(function() {
console.log('error');
//return false
});
}
};
});
:이 서비스는 내 컨트롤러 내에서 호출되는
MainCtrl 테스트를 hasError을 설정해야합니다
beforeEach(function() {
someServiceMock = jasmine.createSpyObj('someService', ['someAsyncCall']);
module('myApp');
inject(function ($rootScope, $controller, $q, _$timeout_,$httpBackend) {
$scope = $rootScope.$new();
someServiceMock.someAsyncCall.andReturn($q.when('weee'));
$timeout = _$timeout_;
controllerService = $controller;
httpMock = $httpBackend;
});
});
it("should set hasError=true with error request", function() {
httpMock.expectGET("/datajfds").respond(false);
ctrl = controllerService('MainCtrl', {someService: someServiceMock});
expect(ctrl.hasError).toBe(true);
});
이 오류입니다 오류 요청시 true.
Expected false to be true.
Error: Expected false to be true.
at new jasmine.ExpectationResult (http://cdnjs.cloudflare.com/ajax/libs/jasmine/1.3.1/jasmine.js:114:32)
at .toBe (http://cdnjs.cloudflare.com/ajax/libs/jasmine/1.3.1/jasmine.js:1235:29)
at .<anonymous> (http://run.plnkr.co/Q77IyPb6agUqgR2U/specs.js:37:31)
기본적으로 나는/범위를 얻을 someService.someAsyncCall()가 오류를 잡을 때의 테스트를 작성하고 싶습니다. ctrl.hasError = true가되도록이 테스트를 작성하려면 어떻게해야합니까?
plunkr : http://plnkr.co/edit/aX29h4k64ZUm6hDedZl6?p=preview
좋은 노력, 단 하나 개의 질문에서 값을 받고되지 않은 : 마지막 사양의 vm.hasError는 다음() 부분하지만 설정됩니다. 그것은 catch() 부분을 트래버스 (traverse)하기로되어있다. 참고 : http : //plnkr.co/edit/EoIgQuoeIwD5eP0JLXIn? p = preview –
적중하려는 서비스가 오류를 반환하는 경우에만 캐치가 실행됩니다. 즉, 서비스가 오류로 인해 응답 할 수 없습니다. 세 번째 테스트를 업데이트하여 $ httpBackend를 사용하여 서비스가 오류를 발생시킬 수있는 방법을 보여주었습니다. – ScottL