簡體   English   中英

Angular2組件測試-錯誤:無法解析所有參數

[英]Angular2 Component test - Error: Can't resolve all parameters

我正在第一次使用Karma / Jasmine等工具測試我的一個組件,並且一直關注測試文檔 我的組件需要3個構造函數參數。

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)

我在這里想念什么? 謝謝!

它可能是由循環DI引起的,請嘗試將您的組件MyComponent重構為注入服務,如下所示:

constructor(@Inject(forwardRef(() => MyComponentService)) private myService: MyComponentService) {}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM