我想知道如何在Angular中测试以下代码?
create() {
this.loading = true;
const email = this.email.value.originurl;
this.emailService.create(data).subscribe((id) => {
this.setID(id);
this.info();
this.loading = false;
});
}
答案 0 :(得分:0)
这只是一种方法,根据您想早点发现哪些错误,有很多测试要测试
此行上的第一个重构代码,提取方法
const email = getEmail();
这是为此的新方法,以便我们以后可以对此进行监视
getEmail():string {
return this.email.value.originurl;
}
然后在.SPEC文件中创建一个模拟服务
let mockEmailService = jasmine.createSpyObj(['create']);
然后在测试台中,在此处注意提供者的值
TestBed.configureTestingModule({
declarations:[Component1, Component2],
imports: [HttpClientTestingModule,SomeModule],
providers: [
{provide: EmailService, useValue: mockEmailService}
]
...
....
});
}));
然后进行单元测试
it('should call email service create on create() at least once', () => {
//Arrange
spyOn(component,'getEmail').and.returnValue('mockemail@emailer.com');
mockEmailService.create.and.callThrough();
//Act
component.create();
//Assert
expect(mockEmailService.create).toHaveBeenCalledTimes(1);
});
这只是一个示例,再次只是为了向您展示您可以在FIRST做些什么。随时更改此设置,并熟悉模拟,间谍和测试平台