1

我有这个组件

const Testcomponent = (props:any) => {    const {
    name,
    age   } = useSelector(
    (state: any) => ({
      name: state.user.name,
      age: state.user.age
    }),
    shallowEqual   );
return (<div>{name}-{age}</div>)
}

我试图测试, import * as redux from 'react-redux'

const useSelectorState =  {
    state:{
        user:{
            name:"test",
            age:11
        }}}

const spy = jest.spyOn(redux, 'useSelector')
spy.mockImplementation(cb => cb(useSelectorState))

这不包括 Coverage report 中的 useselector。

4

1 回答 1

0

我解决了这个问题,我错过了使用状态创建模拟存储的问题,因为选择器将从存储中获取状态,因此我们需要将存储设置为与我们在 useselector 中传递的相同状态

const useSelectorState =  {
    state:{
        user:{
            name:"test",
            age:11
        }}}
const mockStore = configureStore(useSelectorState)

const spy = jest.spyOn(redux, 'useSelector')
spy.mockImplementation(cb => cb(useSelectorState))
于 2021-12-22T12:46:55.107 回答