I'am 따라서 응용 프로그램이 http://localhost:port/login
다음 라우터 설정에 따라 redirectTo
를 사용하여 즉시 시작 루트 구성 요소 app.component.html
HTML 그냥 <router-outlet></router-outlet>
경로를 테스트 할 때 tick() 함수를 사용하는 방법은 무엇입니까?
을 포함 app.component.ts
에 대한 단위 테스트를 실행하려고 :
`export const appRoutes: Routes = [
{ path: '', redirectTo: 'login', pathMatch: 'full'},
{ path: 'login', component: LoginComponent},
{ path: 'add', component: RegisterComponent},
....
];
export const routes: ModuleWithProviders = RouterModule.forRoot(appRoutes);`
내 문제는 내가 실행했을 때입니다. app.component.spec.ts
에서 다음과 같은 방법을 사용하여 /과 :
it('navigate to "" redirects you to /login', fakeAsync(() => {
router.navigate([""]);
tick();
expect(location.path()).toBe("/login");
})
);
테스트가 실패하고 보여줍니다 Expected '' to be '/login'
하지만이 방법/구문을 사용할 때 :
it("root should be able to navigate to `/login`", fakeAsync(() => {
fixture.detectChanges();
// initial navigation
router.navigate([""]).then(() => {
expect(router.url).toEqual("/login");
});
})
);
다음 테스트를 통과 .
그래서이 경우 정확하게 tick()
기능 등을 사용하면 정확히 무엇이 잘못되었는지 알 수 없습니다.
가장 좋은 방법은 무엇입니까? 첫 번째 방법을 사용하여 실패한 테스트를 수정하거나 두 번째 기능이 내 테스트에 충분합니까?
두 번째 대신 사용할 수있는 첫 번째 방법은 무엇을 변경해야합니까?
이상의 입력을 보려면 여기를 사용하여 각도 및 각-CLI 버전 I'am은 다음과 같습니다
Angular CLI: 1.5.0
Node: 8.0.0
OS: darwin x64
Angular: 5.0.3
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router
@angular/cdk: 5.0.0-rc.2
@angular/cli: 1.5.0
@angular/material: 5.0.0-rc.2
@angular-devkit/build-optimizer: 0.0.33
@angular-devkit/core: 0.0.21
@angular-devkit/schematics: 0.0.37
@ngtools/json-schema: 1.1.0
@ngtools/webpack: 1.8.0
@schematics/angular: 0.1.7
typescript: 2.4.2
webpack: 3.8.1
두 번째 방법은 일반적으로 구성 요소 테스트를 어떻게 수행했는지입니다. 어떤 앵글과 ng-cli 버전을 사용합니까? – Zlatko
@Zlatko : 내 질문을 업데이트했습니다 ... 각도 및 각도 cli 버전에 관한 정보를 추가했습니다. –