ユニットのテストを行っていますが、基本テストは失敗します。
cannot resolve all parameters for MyComponent(?.)
角4コンポーネントユニットテストですべてのパラメータ(?)を解決できない
私のコンポーネントのコンストラクタにforwardRef()を追加しようとしましたが、動作します。しかし、私はテストの失敗のためにそれを使用したくないので、それはお勧めしません。
タイプミスがある場合は無視してください。コードスニペットを追加しました。申し訳ありませんが、ここに実際のコードを追加することはできません。
SRC
./services
私-サービスc.ts
./components
私-component.ts
import { MyServiceC } from '../services/my-service-c';
@Component() {...}
export class MyComponent {
private myServiceQ;
constructor(private myServiceC: MyServiceC) {
this.myServiceQ = this.myServiceC.getMyServiceQ();
}
}
my-コンポーネント.spec.ts
import { MyServiceC } from '../services/my-service-c';
import { MockMyServiceC } from '../fixtures/mock-my-service-c';
import { MyComponent } from './my-component';
..other imports...
beforeEach(() => {
TestBed.configureTestingModule({
providers: [
{ provide: MyServiceC, useClass: MockMyServiceC }
],
declarations: [ MyComponent ]
});
fixture = TestBed.createComponent(MyComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should be defined',
() => expect(component).toBeDefined();
);
提案がある場合はお知らせください。私は長い間解決策を見つけようとしてきました。事前に 感謝..
私はあなたのテストを見る前に、どうしてあなたのサービスをそのように扱っているのか聞いてもらえますか?なぜあなたはあなたのコンポーネントに 'serviceQ'を直接注入しないのですか? – lexith
申し訳ありませんが要件です。 serviceQを直接公開するべきではありません。 – mperle
さて、それは 'Injectable()'だと思われますので、あなたもそれを提供する必要がありますか、それともあなたの 'MockMyServiceC'に注入するのですか? – lexith