【发布时间】:2018-02-15 05:51:32
【问题描述】:
我有一个包含多个方法的组件类。我希望能够单独测试这些方法中的每一个。到目前为止,我已尝试单独导出每个以进行测试并在创建后将它们添加到类中,例如:
export const getStrFun = () => 'lorem ip'
export const getNumFun = n => n
export const getJsxFun = (el, i) => <li key={i}>{el}</li>
class MyClass extends Component {
getStrFun = getStrFun
getNumFun = getNumFun
getJsxFun = getJsxFun
render() {
return (
<section>
<p>{this.getStrFun()}</p>
<p>{this.getNumFun(2)}</p>
<ol>{['abc', '123', 'αβγ'].map(this.getJsxFun)}</ol>
</section>
)
}
}
export default MyClass
然后在 myClass.test.js 中设置我的测试
import MyClass, { getStrFun, getNumFun } from '../MyClass'
describe('<MyClass', () => {
it('should render the component', () => {
const component = renderer.create(<MyClass />)
const tree = component.toJSON()
expect(tree).toMatchSnapshot()
})
it('should return the number it is given', () => {
const number = 100
const result = getNumFun(number)
expect(result).toEqual(number)
})
it('should return a string', () => {
const result = getStrFun()
expect(result).toEqual(expect.any(String))
})
})
似乎有效:
<MyClass
✓ should render the component (16ms)
✓ should return the number it is given (1ms)
✓ should return a string (1ms)
我在其他地方没有见过这样的方法,但我也没有找到很多关于如何测试类中存在的方法的信息,所以
测试 React 类的各个方法的规范方法是什么?
编辑
这些测试很简单,没有任何用处;它们只是对这个想法的展示。我不是在问它们的用处或如何为它们设计测试。
【问题讨论】:
-
你可能想改写这个问题,比如“我如何编写测试来避免”。目前,您的问题将收集意见而不是答案。
-
@aaaaaa 这是一个很好的观点。谢谢。
-
getNumFun之类的函数的作用是什么? -
@k0pernikus 只是为了展示这个想法,而不是执行任何有意义的现实目的
-
你在使用
enyzme吗?然后你可以浅渲染一个组件并调用wrapper.instance().myMethod()单独调用和测试方法。
标签: javascript reactjs unit-testing jasmine jestjs