私のようないくつかのリンク、とコンポーネントをテストしようとしている。また、私はすでにthis questionに探してみました角度2ユニットテストrouterLinkクリック
<a routerLink="/contact">Contact</a>
が、それは解決しませんでした問題。私はその質問(以下コード)によって提案されたソリューションをしようとすると、私はプロバイダを設定するためにトライ場合
、私は、このエラー
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [RouterTestingModule],
declarations: [FooterComponent],
}).compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(FooterComponent);
component = fixture.componentInstance;
});
describe('...',() => {
it('should navigate to "/contact" when clicking on link', async(inject([Location], (location: Location) => {
fixture.debugElement.query(By.css('.menu')).children[1].nativeElement.click();
fixture.detectChanges();
fixture.whenStable().then(() => {
console.log(location.path());
});
})));
});
No provider for Location!
を得続ける:[場所]私はこのエラーを取得します:
spyOn(router, 'navigate');
expect(router.navigate).toHaveBeenCalled();
01:
Failed: StaticInjectorError[LocationStrategy]:
StaticInjectorError[LocationStrategy]:
NullInjectorError: No provider for LocationStrategy!
は、私はこのように、ルータをスパイしてみました
しかし、 'Never called'というテストでは失敗します。
どうすればこの問題を解決できますか?
あなたは 'CommonModule'がありません。サイドノートは、想像を絶する最も冗長な定型コードの一部です。 –
@AluanHaddadエラーを解決しましたが、location.path()ログは、予想されるURLではなく空白の '' ''として表示されます。 – celsomtrindade
私はそれについて全く知らない。あなたの設定は疑わしいと思われます。あなたが調べなければならないさまざまな同期および非同期の初期化ロジックがあります。 –