【发布时间】:2018-07-18 20:21:10
【问题描述】:
我正在使用sinon 测试一个反应组件以确认触发了一个函数onClick。
我正在使用styled-components,因此很难定位要点击的元素。
我看到以下错误:
方法“simulate”仅用于在单个节点上运行。找到了 0 个。
我的反应代码如下所示:
import React, { Component } from 'react'
import styled from 'styled-components'
import PropTypes from 'prop-types'
class Button extends Component {
pressNumber = () => {
this.props.updateNumber(this.props.number)
}
render() {
return (
<ButtonContainer
onClick={ this.pressNumber }
>
<Number>{ this.props.number }</Number>
</ButtonContainer>
)
}
}
const ButtonContainer = styled.div`
height: 60px;
width: 60px;
`
const Number = styled.div`
color: #fff;
font-size: 26px;
font-weight: 300;
`
然后我的测试如下所示:
import { expect } from 'chai'
import { shallow, mount } from 'enzyme'
import sinon from 'sinon'
import React from 'react'
import Button from './index'
describe('Button', () => {
let wrapper
const pressNumber = () => {}
beforeEach(() => {
wrapper = mount(
<Button
number={1}
pressNumber={ pressNumber }
/>
)
})
it('should call the update pin prop when click is simulated', () => {
const updatePinClick = sinon.spy();
wrapper.find('ButtonContainer').simulate('click')
expect(updatePinClick.calledOnce).to.be.true
})
})
谁能看到我在这里做错了什么,以及我使用样式组件时是否有不同的方法。
我看到以下错误
方法“simulate”仅用于在单个节点上运行。找到了 0 个。
【问题讨论】:
标签: javascript reactjs jestjs styled-components