我在我的子组件中有这个函数:
<div> {handTotal('dealersHand').total} </div>这是从上面传下来的
但是,当我运行jest时,它显示为Cannot read property 'total' of undefined
当我使用console.log(handTotal('dealersHand')时,它正在记录正确的事情,函数也在工作,所以我知道它正在做正确的事情
我像这样开玩笑地把它扑灭了:
const handTotalStub = jest.fn()
beforeEach(() => {
wrapper = mount(<Dealer
dealersHand={dealersHandStub}
containsAce={containsAceStub}
handTotal={handTotalStub}
/>);
})如何将参数传递给此函数,以便jest了解它是什么?
如果没有意义,可以添加更多代码/解释
存根:
const handTotalStub = jest.fn().mockReturnValue('dealersHand')测试:
it('expects dealers hand to equal', () => {
expect(handTotalStub('dealersHand').total).toEqual(1);
});发布于 2018-04-08 15:15:15
handleTotalStub的jest spy没有返回任何内容,因此它返回undefined。当您的组件尝试调用handTotal('dealersHand').total时,它因此调用的是undefined.total,因为没有定义handTotal(...)。
通过更改更新您的间谍以返回某些内容(任何内容)
handTotalStub = jest.fn();至
handTotalStub = jest.fn().mockReturnValue(SOME_VALUE);或
handTotalStub = jest.fn().mockImplementation(() => SOME_VALUE);(其中SOME_VALUE是您可以模拟出的任何值,以充当组件期望出现的值)
编辑--好吧,你误解了mockReturnValue的作用。您不必模拟传递给该方法的参数。因为您的组件已经传入了该字符串。但是,实际的handTotal方法永远不会被调用(这是一件好事,因为我们测试的不是handTotal的工作方式,而是组件的工作方式)。
所以,handTotal通常会返回的内容就是您希望放入mockReturnValue()中的内容。因此,如果handTotal返回一个像{total: 1}这样的对象,那么您应该说mockReturnValue({total: 1})
https://stackoverflow.com/questions/49715388
复制相似问题