Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 测试角度组件中名为subscribe的方法_Angular_Jasmine_Rxjs - Fatal编程技术网

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作为旁注,你应该在调用后删除英雄。如果呼叫失败,您将删除前端的英雄,但不会删除后端的英雄。谢谢!这么简单,只要派一个间谍回去,给那个间谍!非常感谢。没问题,记住将问题标记为已解决!谢谢这么简单,只要派一个间谍回去,给那个间谍!非常感谢。没问题,记住将问题标记为已解决!