我有这个容器
import { connect } from 'react-redux'
import { createType, getTypes } from '../modules/type'
import Type from '../components/Type'
const mapDispatchToProps = {
createType,
getTypes
}
const mapStateToProps = state => ({
types: state.type.types
})
export default connect(mapStateToProps, mapDispatchToProps)(Type)
我希望使用enzyme
进行测试。为此,我正在使用此测试
import React from 'react'
import { Provider } from 'react-redux'
import { mount } from 'enzyme'
import TypeContainer from 'routes/Type/containers/TypeContainer'
import configureMockStore from 'redux-mock-store';
import thunk from 'redux-thunk';
const mockStore = configureMockStore([ thunk ]);
const mockStoreInitialized = mockStore({
type: {
types: [
{id: 1, name: 'type 1'}
]
}
});
describe.only('(Route) Type', () => {
it('should get container', () => {
const wrapper = mount(
<Provider store={mockStoreInitialized}>
<TypeContainer />
</Provider>
)
expect(wrapper.find(TypeContainer).prop('types')).to.deep.equal([{id: 1, name: 'type 1'}])
})
})
测试失败(在断言级别),因为wrapper.find(TypeContainer).props()
为空。我找不到原因。
奇怪的是,如果我检查覆盖率报告,我的测试会传递到mapStateToProps
函数。
我错过了什么吗?
答案 0 :(得分:1)
TypeContainer
将没有名为types
的道具,它将从商店中提取types
并将其传递给Type
,将有一个名为types
的道具。所以mapStateToProps
没有做正确的事情;只是你正在对错误的对象做出断言。