Jest spy到未导出的函数REACT

92vpleto  于 2023-09-28  发布在  Jest
关注(0)|答案(1)|浏览(101)

如何监视使用JEST编写在函数组件内的未导出函数?

const ProfilePage: NextPage<Props> = ({
const getUser = () => {
return {
 name: 'Joker',
}
}
return (
<Box>Hello world</Box>
)
)}

我想监视getUser函数,看看它是否返回{name: 'Joker'}。我尝试使用酶,但这对我不起作用,因为它不适用于react 18版本。

it('GetUserSpy', () => {
    jest.spyOn(ProfilePage.prototype,'getUser') // prototype is undefined because its a function component
  });
62o28rlo

62o28rlo1#

不幸的是,您不能这样做。但是您可以简单地从组件中提取函数并导出它。如果你在函数中不使用任何钩子,这应该不是问题。
还要注意的是,监视的想法并不是检查returnValue。如果您想查看getUser函数返回的内容,您可以在测试中简单地调用它,并使用expect(result).toBe({name: 'Joker'}),您还需要导出该函数。如果你想做间谍,这应该工作:

export const getUser = () => ({
  name: 'Joker',
})

const ProfilePage: NextPage<Props> = ({
  const user = getUser()
  return (
    <Box>Hello world</Box>
  )
)}
import * as getUserModule from 'path/to/module';

describe('ProfilePage', () => {
  it ('should call getUserSpy', () => {
    //GIVEN
    const getUserSpy = jest.spyOn(getUserModule,'getUser') 
    //WHEN
    render(<ProfilePage />)
    //THEN
    expect(getUserSpy).toHaveBeenCalled();
  })
})

相关问题