カルマ/ジャスミンなどを使用して初めてコンポーネントをテストしており、ほとんどがdocs on testingと一緒に続いています。私のコンポーネントには3つのコンストラクタ引数が必要です。私はモック/スタブ次のようにthis section of the docsに基づくもの依存関係にしようとしているAngular2コンポーネントテスト - エラー:すべてのパラメータを解決できません
constructor(
private myService: MyService,
private renderer: Renderer,
private element: ElementRef
) { }
。
// Mocks/Stubs
const myServiceStub = {};
class MockElementRef {}
class MockRenderer {}
// beforeEach block
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [ MyComponent ],
providers: [
{ provide: ElementRef, useClass: MockElementRef },
{ provide: Renderer, useClass: MockRenderer },
{ provide: MyService, useValue: myServiceStub},
]
});
fixture = TestBed.createComponent(MyComponent);
});
これにもかかわらず、テストを実行するたびに次のエラーが発生します。
Error: Can't resolve all parameters for MyComponent: (?, ?, ?).
at SyntaxError.ZoneAwareError (test.ts:9250:33)
at SyntaxError.BaseError [as constructor] (test.ts:44243:16)
at new SyntaxError (test.ts:44453:16)
at CompileMetadataResolver._getDependenciesMetadata (test.ts:61503:31)
ここでは何が欠けていますか?ありがとうございました!
あなたは非同期である 'TestBed.compileComponents'、する必要があります。テンプレートを使用したコンポーネントのテストに関する節を参照してください。 – jonrsharpe
それは@jonrsharpeではなく、テンプレートはインラインで別ファイルにありません –