首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将参数传递给jest函数

将参数传递给jest函数
EN

Stack Overflow用户
提问于 2018-04-08 15:08:34
回答 1查看 17.3K关注 0票数 3

我在我的子组件中有这个函数:

代码语言:javascript
复制
<div> {handTotal('dealersHand').total} </div>

这是从上面传下来的

但是,当我运行jest时,它显示为Cannot read property 'total' of undefined

当我使用console.log(handTotal('dealersHand')时,它正在记录正确的事情,函数也在工作,所以我知道它正在做正确的事情

我像这样开玩笑地把它扑灭了:

代码语言:javascript
复制
const handTotalStub = jest.fn()
  beforeEach(() => {
    wrapper = mount(<Dealer
      dealersHand={dealersHandStub}
      containsAce={containsAceStub}
      handTotal={handTotalStub}
    />);
  })

如何将参数传递给此函数,以便jest了解它是什么?

如果没有意义,可以添加更多代码/解释

存根:

代码语言:javascript
复制
  const handTotalStub = jest.fn().mockReturnValue('dealersHand')

测试:

代码语言:javascript
复制
  it('expects dealers hand to equal', () => {
    expect(handTotalStub('dealersHand').total).toEqual(1);
  });
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-08 15:15:15

handleTotalStub的jest spy没有返回任何内容,因此它返回undefined。当您的组件尝试调用handTotal('dealersHand').total时,它因此调用的是undefined.total,因为没有定义handTotal(...)

通过更改更新您的间谍以返回某些内容(任何内容)

代码语言:javascript
复制
handTotalStub = jest.fn();

代码语言:javascript
复制
handTotalStub = jest.fn().mockReturnValue(SOME_VALUE);

代码语言:javascript
复制
handTotalStub = jest.fn().mockImplementation(() => SOME_VALUE);

(其中SOME_VALUE是您可以模拟出的任何值,以充当组件期望出现的值)

编辑--好吧,你误解了mockReturnValue的作用。您不必模拟传递给该方法的参数。因为您的组件已经传入了该字符串。但是,实际的handTotal方法永远不会被调用(这是一件好事,因为我们测试的不是handTotal的工作方式,而是组件的工作方式)。

所以,handTotal通常会返回的内容就是您希望放入mockReturnValue()中的内容。因此,如果handTotal返回一个像{total: 1}这样的对象,那么您应该说mockReturnValue({total: 1})

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49715388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档