我正在使用antd Checkbox
组件中的CheckboxWidget
组件,组件has a contextType
defined:
static contextTypes: {
checkboxGroup: any
}
我想使用shallow
使用酶进行渲染来测试它,因此我使用withContext
块内recompose
的{{1}}帮助器:
beforeEach
然而,当我像这样编写测试时:
describe('Simple Checkbox Widget', () => {
beforeEach(() => {
withContext({
getChildContext: function () {
return {checkboxGroup: null}
},
childContextTypes: {
checkboxGroup: shape({
disabled: bool,
toggleOption: func,
value: array
})
}
})(CheckboxWidget)
})
})
我注意到测试失败了,因为找不到it('renders a checkbox from Antd', () => {
const wrapper = shallow(<Subject />)
const actual = wrapper.find(AntdCheckbox).length
const expected = 1
expect(actual).toEqual(expected)
})
小部件。我认为这是因为渲染的组件看起来像:
Checkbox
我发现 <Subject />
为wrapper.instance()
且Subject
未定义。我尝试使用wrapper.instance().children
,但它似乎也没有在wrapper.dive
上工作。
答案 0 :(得分:1)
有一种更简单的方法可以将某些内容放入上下文中。 shallow
函数接受选项作为第二个参数。在选项中,您可以传递组件的上下文:
it('renders a checkbox from Antd', () = > {
const wrapper = shallow( < Subject / > , {
context: {
checkboxGroup: checkboxGroup: shape({
disabled: bool,
toggleOption: func,
value: array
})
}
})
const actual = wrapper.find('AntdCheckbox').length
const expected = 1
expect(actual).toEqual(expected)
})