我刚刚开始为我们的应用程序编写测试,并被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