测试角2组件与构造函数的参数

Bor*_*ijk 6 testing unit-testing typescript angular

说我有一个角2组件有两个输入参数:

@Component{... (omitted for clarity)}
export class SomeComponent {

@Input() a: number
@Input() b: number

}
Run Code Online (Sandbox Code Playgroud)

当我想测试这个组件我有这样的:

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [
        SomeComponent,
      ],
    })
    .compileComponents();
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(SomeComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });
Run Code Online (Sandbox Code Playgroud)

createComponent调用不带任何参数或允许我调用构造函数。我怎样才能实例化/测试各种数值的组成部分?

Deu*_*unz 4

正如 JB Nizet 所指出的,当组件具有 @input 参数时,您需要在 beforeEach() 中初始化它们:```

beforeEach(() => {
    fixture = TestBed.createComponent(SomeComponent);
    component = fixture.componentInstance;
    component.a = 1;
    component.b = 2;
    fixture.detectChanges();
});
Run Code Online (Sandbox Code Playgroud)

````

  • 所有这些操作都在调用 createComponent() 之后发生。所以它会在构造函数完成后起作用。因此,您将无法设置只读属性。 (6认同)
  • const Injector = Injector.create({providers: [{provide: SelfService, useClass: MockSelfService, deps: []}]}); 组件.selfService = 注入器.get(SelfService); 例如,如果 SelfService 依赖于 http,则可以通过注入器创建它 (2认同)