我有一个React项目。在这个项目中,我们使用一些SDK来处理与身份验证相关的活动。这个SDK几乎在所有组件中都是导入的。这个SDK有其他的内部依赖。
import { exampleSDK } from "../../path/exampleSDK";
const exampleComponent = () => {
const { onAuthenticate, onLogout } = exampleSDK({}) // just few examples
return (<><div>Example Component</div>/</>)
}
这个exampleSDK
有内部依赖,当我试图在单元测试中调用组件时,它似乎失败了。我不需要为SDK编写单元测试。我希望在测试组件时能够模拟exampleSDK
的实现。目前,当我从"@testing-library/react"
调用带有render()
函数的组件时,我得到以下错误。
TypeError: Cannot read properties of undefined (reading 'y')
> 12 | ExampleHandler.prototype = Object.create(window.x.y.prototype)
^
这在exampleSDK
内部调用的模块中实现。
我尝试使用Object.defineProperty(window, 'x', {y: {}})
,但没有工作(也许我做错了)。
有没有办法跳过错误部分,或者是否可以模拟SDK的实现?
1条答案
按热度按时间vlju58qv1#
如果你想模拟你的SDK,你可以通过
jest.mock()
来实现。在你的测试中试试这个嘲笑的方式不止一种。上面只是其中之一。
您可以 checkout
jest.spyOn()
或.mockImplementation()
或.mockReturnValue()
在jest docs上搜索这些东西-https://jestjs.io/docs/mock-function-api