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()
関数などを使って正確に何が間違っているのか分かりません。
ベストプラクティスは何ですか?最初の方法を試して、失敗したテストを修正するか、2番目の関数がテストに十分なのでしょうか?
2番目の代わりに使用するには、最初の方法で何を変更/修正する必要がありますか?
以上の入力については、こちらを使用して、角と角-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
2番目の方法は、通常コンポーネントテストをどのように実行するかです。あなたは何の角度とng-cliバージョンを使用していますか? – Zlatko
@Zlatko:私は質問を更新しました...角度と角度cliのバージョンに関する情報を追加しました。 –