gpt4 book ai didi

javascript - 单元测试未定义不是一个对象(评估 'this.groups.map' )

转载 作者:行者123 更新时间:2023-12-03 01:31:00 24 4
gpt4 key购买 nike

我有那个脚本

  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,但不起作用。我怎样才能为变量赋予一些值?多谢!我真的需要学习!

最佳答案

安插 spy 会取代你的职能。

这意味着它不再返回任何内容。

这意味着您从

开始
groups = [];

然后你监视你的函数

spyOn(AuthenticationService, 'getUserGroups');

然后你就会得到

groups = undefined;

要解决这个问题,只需在 spy 中返回一个值即可:

spyOn(AuthenticationService, 'getUserGroups').and.returnValue([]);

编辑 因为您位于构造函数中,所以您无法监视组件本身,因为它尚未创建。

很高兴你,你拥有原型(prototype)继承。您可以监视原型(prototype),而不是监视服务实例:

spyOn(AuthenticationService.prototype, 'getUserGroups').and.returnValue([]);

您应该将其放在 describe('MyComponent') 下,这样这是第一个被调用的东西。

关于javascript - 单元测试未定义不是一个对象(评估 'this.groups.map' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51305495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com