我有那个剧本
groups: Group[] = []
constructor(
) {
this.groups = AuthenticationService.getUserGroups()
let menuList: any = []
this.groups.map((permission: Group) => {
menuList.push(...this.menuGenerator[permission.nomeGrupo.split('-')[1]])
})
}
当我运行npm run test
时,仅出现该错误TypeError: undefined is not an object (evaluating 'this.groups.map')
。我想知道什么是最好的解决方法。我将spyOn
放在getUserGroups
上,但是不起作用。如何为变量添加一些值?非常感谢!我真的需要学习!
答案 0 :(得分:1)
放置间谍将替换您的功能。
这意味着它不再返回任何内容。
这意味着您从
开始groups = [];
然后监视功能
spyOn(AuthenticationService, 'getUserGroups');
然后您获得
groups = undefined;
要解决此问题,只需在间谍中返回一个值:
spyOn(AuthenticationService, 'getUserGroups').and.returnValue([]);
编辑因为您在构造函数中,所以无法监视组件本身,因为它没有创建。
很高兴为您提供原型继承。除了监视服务实例,您还可以监视原型:
spyOn(AuthenticationService.prototype, 'getUserGroups').and.returnValue([]);
您应该将此放在describe('MyComponent')
下,因此这是第一件事。