Angular Jest:nativeElement.getBoundingClientRect不是函数
我试图在应用程序测试中验证两个getBoudingClientRect函数的返回,但在尝试验证第二个函数的返回时出错 第一个是我通过ID搜索的HTMLElement,到目前为止还可以。在测试中,我可以如下模拟您的返回: HTMLElement.prototype.getBoundingClientRect=jest.fn() 但是,第二个元素是ElementRef,我通过nativeElement访问来获取他的信息,尽管我尝试以任何方式模拟他的返回,但当我尝试在我的组件中获取此值时,总是会得到相同的错误: TypeError:el.nativeElement.getBoundingClientRect不是函数Angular Jest:nativeElement.getBoundingClientRect不是函数,angular,unit-testing,jestjs,Angular,Unit Testing,Jestjs,我试图在应用程序测试中验证两个getBoudingClientRect函数的返回,但在尝试验证第二个函数的返回时出错 第一个是我通过ID搜索的HTMLElement,到目前为止还可以。在测试中,我可以如下模拟您的返回: HTMLElement.prototype.getBoundingClientRect=jest.fn() 但是,第二个元素是ElementRef,我通过nativeElement访问来获取他的信息,尽管我尝试以任何方式模拟他的返回,但当我尝试在我的组件中获取此值时,总是会得到相
有人能帮我解决这个问题吗?刚刚更新,我发现了问题。为了测试我创建的方法,我需要模拟一个ElementRef并向它传递一些属性,然后我得到了错误消息,因为我没有告诉我的元素getBoundingClientRect是一个函数。因此,我只需要在ElementRef声明中模拟此函数及其返回,而不是尝试在其他任何地方进行模拟,如下所示:
const el = new ElementRef({
getBoundingClientRect() {
return {
}
}
});
这对我有用。虽然这不是一个错误,而是对工具的滥用,但我希望它能帮助那些遇到同样疑问的人。只是更新一下,我发现了问题所在。为了测试我创建的方法,我需要模拟一个ElementRef并向它传递一些属性,然后我得到了错误消息,因为我没有告诉我的元素getBoundingClientRect是一个函数。因此,我只需要在ElementRef声明中模拟此函数及其返回,而不是尝试在其他任何地方进行模拟,如下所示:
const el = new ElementRef({
getBoundingClientRect() {
return {
}
}
});
这对我有用。虽然这不是一个错误,而是对工具的滥用,但我希望它能帮助那些经历同样疑问的人