0
누구나 아래의 시나리오를 통해 나를 업 그레 이드 할 수 있습니까? $ stateChangeSuccess는 콜백 함수 없이도 쉽습니다. 그러나 stateChangeStart를 찾기가 어렵습니다. 그 다음 할 수 있습니다 단순히 spyOn ($의 범위 '에 $'내부 컨트롤러 인 경우statechangestart의 테스트 케이스
$scope.$on('$stateChangeStart', function (event, toState, toParams, fromState) {
if (fromState.name.match('test.abc') && ($scope.validate())) {
event.preventDefault();
}
});
다음과 같은 것을 시도,하지만 난 확실하지 않다, 내가 옳은 길을
var fromState = {name: 'test.abc'};
var toState = {name: 'test.xyz'};
scope.$on('$stateChangeStart');
expect(scope.$on).toHaveBeenCalled();
expect(fromState.name)toBe('test.abc');
/* expect event prevent default? */
내가 그 안에 fromState, TOSTATE 인자들을 통과해야합니까? – Mithun
@Hansie 콜백을 원하는 모든 것을 전달할 수 있습니다. 위의 예 에서처럼 추출하면 정상적인 기능입니다. 다른 어떤 것과도 다르지 않습니다. 특별한 경우에, 당신은 State.name.match ('test.abc')의 예외가 예외를 던지기 때문에 이것을 fromState에서 넘겨야 만합니다. – sielakos
마지막 바보 같은 질문에 사과드립니다. args가 배열 일 수 있습니까? 나는'상태, toState, toParams, fromState'를 전달해야합니다. 이 모든 것을 얼마나 정확하게 받아들이겠습니까? 배열 중 하나? 그리고 이벤트는 'var event = scope. $ broadcast ('click ')을 사용하여 외부 모의 객체를 생성하여 스파이가되거나 전달되어야합니다. plz clarrify – Mithun