【发布时间】:2018-11-28 23:05:59
【问题描述】:
我有一个简单的 React 组件,它接收一个属性 type 和一个回调 onClick。
当用户点击组件回调时执行传递属性type。
我需要用 jest 和酵素来写一个测试。 我正在使用带有模拟回调的以下代码,但我看不到组件传入的参数。
我在这里做错了什么?
const Component = ({type, onClick}) => <div onClick={() => onClick(type)}></div>
describe('<Component />', () => {
it('should call callback on click getting passed value', () => {
const mockCallback = jest.fn()
const wrapper = shallow(<Component type="xxx" onClick={mockCallback} />)
wrapper.simulate('click')
expect(mockCallback).toHaveBeenCalled() // this is ok
expect(mockCallback).toBeCalledWith("xxx")// ISSUE HERE: always false
})
})
【问题讨论】:
-
不确定这是否与问题有关或只是一个错字,但您的组件定义缺少花括号:
const Component = ({ type, onClick }) => <div onClick={() => onClick(type)}></div>(也是 const,而不是 续) -
有了这个改变,我已经尝试运行你的代码,它工作得很好,所有测试都通过了
标签: javascript reactjs mocking jestjs