2016-08-23 5 views
0

이것은 내 애플리케이션의 탐색을 처리하는 간단한 서비스입니다. 사용자가 현재 상태대로 "다음"을 클릭하면 다음 페이지로 리디렉션됩니다. 내가 실패 테스트하려고 할 때angularjs 서비스에서 함수를 테스트하는 방법

'use strict'; 

describe('ButtonBarService', function() { 

beforeEach(module('myAngularmodule')); 
var ButtonBarService; 

beforeEach(inject(function (_ButtonBarService_) { 
    ButtonBarService = _ButtonBarService_; 

    spyOn(ButtonBarService, 'next'); 

})); 

describe('next()', function() { 

    it('should retrieve the current user', function() { 
     expect(ButtonBarService.next).toHaveBeenCalled(); 
    }); 

}); 

}); 

'use strict'; 

angular 
.module('myAngularmodule') 
.service('ButtonBarService', 
function ($state, StatesConstants) { 

    return { 
     next: next 
    }; 

    function next() { 
     switch ($state.current.name) { 
      case StatesConstants.LICENSE : 
       $state.go(StatesConstants.APPLICATIONGROUP); 
       break; 
      case StatesConstants.APPLICATIONGROUP : 
       $state.go(StatesConstants.ANALYSIS); 
       break; 
      default: 
       break; 
     } 
    } 


}); 

내 사양 파일, 그것은 "다음 예상 스파이가 호출 된 것으로."라고 말하는 실패 이 서비스에는 백엔드가 없으므로 버튼바를 처리하기 위해 일반화했습니다. 저는 프론트 엔드에 새로운 경험이 있습니다. 나는 $ http를 가지고 있지만 이해할 수없는 해답을 보았다.

+0

내부 기능이 무엇인지 확인해야합니다. 각각 앞에 ButtonBarService.next()를 추가하고 예상을 확인해야합니다. –

+0

자세히 대답 할 수 있습니까? 이미 그것을 감시하고 있습니다. 다른 일을해야합니까 ?? – ankitd

+0

당신이 말하고 싶은 잘못된 것들을 테스트하고있다. 어떤 상태에서 ... $ state.go (StatesConstants.APPLICATIONGROUP);가 다른 서비스 나 컨트롤러의 일부 여야하는지에 대한 테스트가 필요하다. –

답변

0

시도 (작성 ES6 구문) :

spyOn(ButtonBarService, 'next').and.callFake(() => true); 

이 그런 다음 내가 생각 작동합니다 기대합니다.

+0

감사합니다 @ rrd,하지만 그것은 효과가 없었어요. – ankitd

관련 문제