У меня есть компонент, который получает атрибут, введенный через @Attribute
:
@Component({
selector: 'app-foo',
templateUrl: './foo.component.html'
})
export class FooComponent implements OnInit {
constructor(@Attribute('foo') private foo: string) {
// do something with foo
}
}
Теперь я хотел бы написать тест с использованием Jasmine и Karma.К сожалению, я не могу найти никакой документации о том, как предоставить этот атрибут в тесте через инжектор TestBed
.
Вот что я попробовал:
describe('FooComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
providers: [
{provide: 'foo', useValue: 'bar'},
{provide: Attribute('foo'), useValue: 'bar'},
],
declarations: [FooComponent],
})
.compileComponents();
}));
it('should merge outer class', () => {
const fixture = TestBed.createComponent(FooComponent);
const component = fixture.componentInstance;
fixture.detectChanges();
// do actual testing
});
});
После некоторых исследований я такжеопределил следующее, но безуспешно:
Inject('foo')(FooComponent, null, 0);
Attribute('foo')(FooComponent, null, 0);
Параметр, передаваемый конструктору, всегда равен null
.Кто-нибудь знает решение?Я использую Angular 5.2.10.