我在一个组件上声明了这个属性:
@Input() private origin;
哪些具有这些属性
const origin = {
'iban': string,
'user': string,
'description': string,
'money': string
};
我想测试服务TransactionContextService以检查组件是否真实。
beforeEach(inject([TransactionContextService], (service: TransactionContextService) => {
service.setOrigin(origin);
service.setBenefactor(Usuals.getMockData()[0]);
fixture = TestBed.createComponent(FormTransactionComponent);
component = fixture.componentInstance;
fixture.detectChanges();
}));
it('should create', () => {
expect(component).toBeTruthy();
});
问题是:TypeError:无法读取未定义的属性'money'
我尝试使用spyOn使用 setOrigin 方法初始化输入“origin”。但这没效果。我想过使用服务TransactionContextService的模拟,但它是我要测试的服务... ^^
因此,似乎iban,用户和描述已初始化,但金钱属性不是。我应该模拟服务的setOrigin方法吗?如何初始化组件的私有属性?
答案 0 :(得分:0)
您可以使用存根组件。 https://angular.io/guide/testing#nested-component-tests
这样您就可以使用所需的属性创建组件的存根。您需要手动创建money属性。
以下链接进一步说明了如何使用模拟组件创建设置夹具。