如何测试blur()已被调用?

问题描述 投票:0回答:1

如何测试是否使用jest调用blur()

这是我的功能:

blurOnEnter (event) {
  if (event.keyCode === 13 && !event.shiftKey) event.target.blur()
}

这就是我测试它的方式,但我不知道如何处理我的期望声明:

it('blurOnEnter() should blur target input field', () => {
  const blur = jest.fn()
  wrapper = shallow(<Component />)
  wrapper.instance().blurOnEnter({
    keyCode: 13,
    target: { blur }
  })
  expect(blur.calls.length).toBe(1) // TypeError: Cannot read property 'length' of undefined
})

为什么我会得到TypeError Cannot read property 'length' of undefined

javascript unit-testing jestjs
1个回答
0
投票

怎么样:

it('blurOnEnter() should blur target input field', () => {
  const blur = jest.fn()
  wrapper = shallow(<Component />)
  wrapper.instance().blurOnEnter({
    keyCode: 13,
    target: { "blur": blur } // see here!
  })
  expect(blur.mock.calls.length).toBe(1) // and here
})

根据(http://facebook.github.io/jest/docs/en/mock-functions.html#content)的jest模拟文档,jest模拟有mock属性,而你的原始代码没有使用它。

© www.soinside.com 2019 - 2024. All rights reserved.