Angular 测试角度组件中名为subscribe的方法
如果我在组件中有以下删除方法Angular 测试角度组件中名为subscribe的方法,angular,jasmine,rxjs,Angular,Jasmine,Rxjs,如果我在组件中有以下删除方法 @Component({ selector: 'app-heroes', templateUrl: './heroes.component.html', styleUrls: ['./heroes.component.css'] }) export class HeroesComponent { this.heroes = []; constructor(private heroService: HeroService) { } dele
@Component({
selector: 'app-heroes',
templateUrl: './heroes.component.html',
styleUrls: ['./heroes.component.css']
})
export class HeroesComponent {
this.heroes = [];
constructor(private heroService: HeroService) { }
delete(hero: Hero): void {
this.heroes = this.heroes.filter(h => h !== hero);
this.heroService.deleteHero(hero).subscribe();
}
}
如何在Jasmine中测试delete-hero方法调用了subscribe
在测试中
这里有一个测试,确保使用特定参数调用deleteHero,但我不确定如何检查订阅
// Interaction Test
it('should call deleteHero with the specificed argument', () => {
// arrange
mockHeroService.deleteHero.and.returnValue(of(true));
component.heroes = HEROES;
// act
component.delete(HEROES[2]);
// assert
expect(mockHeroService.deleteHero).toHaveBeenCalledWith(HEROES[2]);
});
你需要两个间谍:
it('should call deletehore with the specified argument',()=>{
const resMock=of(真);
spyOn(resMock,'subscribe');//不需要。既然你在它之后什么都不做
mockHeroService.deleteHero.and.returnValue(resMock);
component.heromes=英雄;
删除(英雄[2]);
期望(mockHeroService.deletehore).与(英雄[2])一起被调用;
expect(resMock.subscribe).toHaveBeenCalledWith();//检查是否未给出回调
});
您将需要两名间谍:
it('should call deletehore with the specified argument',()=>{
const resMock=of(真);
spyOn(resMock,'subscribe');//不需要。既然你在它之后什么都不做
mockHeroService.deleteHero.and.returnValue(resMock);
component.heromes=英雄;
删除(英雄[2]);
期望(mockHeroService.deletehore).与(英雄[2])一起被调用;
expect(resMock.subscribe).toHaveBeenCalledWith();//检查是否未给出回调
});
subscrbe()内部是什么?你不想在subscribe方法中得到delete响应吗?我正在pluralsight上学习单元测试课程,他们问你如何检查subscribe方法是否被调用。组件(在subscribe方法中不做任何事情)是他们在教程中使用的组件方法。看起来很傻,当然。但我还是很好奇我会如何检查subscribe是否被调用。@MichaelMartinez作为旁注,你应该在调用后删除英雄。如果调用失败,您将删除前端的hero,而不是后端的hero。subscrbe()中有什么内容?你不想在subscribe方法中得到delete响应吗?我正在pluralsight上学习单元测试课程,他们问你如何检查subscribe方法是否被调用。组件(在subscribe方法中不做任何事情)是他们在教程中使用的组件方法。看起来很傻,当然。但我还是很好奇我会如何检查subscribe是否被调用。@MichaelMartinez作为旁注,你应该在调用后删除英雄。如果呼叫失败,您将删除前端的英雄,但不会删除后端的英雄。谢谢!这么简单,只要派一个间谍回去,给那个间谍!非常感谢。没问题,记住将问题标记为已解决!谢谢这么简单,只要派一个间谍回去,给那个间谍!非常感谢。没问题,记住将问题标记为已解决!