위의 문제를 조사하여 해결할 올바른 방법을 발견했습니다. location.go (common lib) 메서드는 내부 라우팅 탐색에만 사용할 수 있으며 외부 URL (비 앵귤러 경로 링크)로 리디렉션하려는 경우에는 작동하지 않습니다.
window.location
또는 location.href(lib.es6)
과 같은 기본 DOM 요소 \ 특성을 모방 할 방법이 없습니다 (기능과 달리).
제 해결책은 이동, 경로 및 집과 같은 몇 가지 방법이있는 위치 서비스를 구성하는 것입니다. 각 메소드는 lib.es6 위치를 사용하여 필요한 메소드를 호출해야합니다. 예를 들어 : LocationService.go(url)
는 호출합니다 : location.href = url
참고 :이 서비스는 외부 URL 리디렉션을 필요로하는 모든 곳에서 사용됩니다.
선언 위치 서비스 :
const locationSpy: LocationService = new LocationService();
공급자로 를 주입 조롱 서비스 다음 TestBed.configureTestingModule
추가에
:을 .spec 파일에 대한 비웃음 위치 서비스에 의해 처리됩니다
providers: [
{provide: LocationService, useValue: locationSpy}
]
우리가 사용하는 것을 조롱 방법에 SpyOn
을 정의 :
spyOn(locationSpy, 'go');
테스트 외부 재 호출 :
expect(locationSpy.go).toHaveBeenCalledWith('expected URL');
감사 , 둘다
그것은 일반 JS에서와 동일합니다합니다. –
가능한 중복. 여기를 참조하십시오 http://stackoverflow.com/questions/39912264/routing-outside-of-application-angular2 –