Jest/Enzyme 在配置的存储中找不到 getState 函数



我刚刚开始为我们的应用程序编写测试,并被redux难倒了。这就是现在的结构。

测试

import configureStore from 'redux-mock-store';
const initialState = require("./testUtils/testUtils")
const mockStore = configureStore(applyMiddleware(thunk), initialState);
describe('<Link/>', () => {
test("Renders a link tag", () => {
const wrapper = shallow(
<Provider store={mockStore}> <Link href="" /> </Provider>
).dive({context: {mockStore}})
expect(wrapper).toMatchSnapshot()
})
})

元件

const Link = props => {
const { href, ...rest } = props
const absoluteLink = useAbsoluteLink(href)
return <MaterialLink href={absoluteLink} {...rest} />
}

使用绝对链接

export default link => {
const hostName = useSelector(state => state.pageData.hostName)
if (typeof link != 'undefined'
&& hostName
&& link.charAt(0) != '#'
&& !/^https?:///i.test(link)
&& !/^///.test(link)
) {
link = hostName + link
}
return link
}

错误

● <Link/> › Renders a link tag
TypeError: Cannot read property 'getState' of undefined
24 | 
25 |     test("Renders a link tag", () => {
> 26 |         const wrapper = shallow(
|                         ^
27 |              <Provider strore={mockStore}> <Link href="" /> </Provider>
28 |         ).dive({context: {mockStore}})
29 | 

我已经尝试了我在做研究时看到的一切,但没有任何解决。

似乎您错过了mockStore调用。从 doc 开始,从configureStore你得到函数nockStore你应该再次调用,将假存储传递给它。

// Initialize mockstore with empty state
const initialState = { pageData: { hostName: 'some-host-name' } }
const store = mockStore(initialState)

应传递给Provider的结果store

相关内容

  • 没有找到相关文章