2014-12-31 5 views
6

$ state.go()가 있고 해당 특정 상태로 리디렉션 될 것으로 예상되는 함수에 대한 단위 테스트를 작성하려면 어떻게해야합니까?

  $scope.inviteMembers = (id)=> { 
       $state.go('invite', {deptId: id}); 
       } 
+0

컨트롤러의 나머지 부분에 대해 이미 유닛 테스트가 있습니까? – lukewestby

+0

@lukewestby 아니요. 상태를 확인하기 위해서만 작성합니다. – forgottofly

답변

15

단위 테스트이므로 함수가 호출되고 있는지 확인해야합니다. 이 라인을 따라

뭔가 :

it('should move to the invite page after inviting someone', function() { 
    spyOn($state, 'go'); 

    $scope.inviteMembers(1); 

    expect($state.go).toHaveBeenCalledWith('invite', {deptId: 1}); 
}); 

그래서 여기에 주요 아이디어는 $statego 방법을 감시하는 것입니다 우리가 메서드를 호출 할 때, 우리는 단지 $state.go 메서드가 호출되었는지 확인해야하고 어떤 매개 변수로.

나에게 물어보기 전에 ... 네,하지만 상태가 바뀌 었는지 확인하고 싶습니다. 당신은 그렇게 할 필요가 없습니다.

단위 테스트입니다.이 컨트롤러 만 테스트하면되고 그 밖의 것은 테스트하지 않고 해당 메소드를 호출하는 책임도 끝납니다. 그 후 다른 사람의 책임은 어떻게됩니까,이 경우에는 ui-router이고 저는 ui-router가 잘 테스트됨을 확신합니다 :)

+0

감사합니다. @ Jesus.Can도이 문제를 조사해주십시오 .http : //stackoverflow.com/questions/27740395/cannot-read-property-loadlisting -of-undefined-karma-jasmine – forgottofly

관련 문제