【发布时间】:2018-12-03 20:58:19
【问题描述】:
所以我有如下内容:
function calculate = (value) => { return value + somecalculations }
class MyComponent extends React.Component {
...
render() {
if (calcuate(this.props.value) === 1) {
return(<MyComponentVersion1 />)
} else {
return <MyComponentVersion2 />
}
}
}
我的问题是,在进行开玩笑的单元测试时,我希望能够模拟函数 calculate()。但是该函数对该文件是全局的,并且不是我的反应组件的一部分。有没有办法模拟这个函数,所以它总是返回 1?谢谢
【问题讨论】:
-
它没有以任何其他方式导出或暴露?我的意思是,测试内部功能的目的是什么?现在编写代码的方式需要更改
value。如果您需要模拟calculate,那么听起来它应该可以自行测试,因此导出或在单独的模块中,那么这个问题就消失了。 (是的,像重新布线这样的工作,但它几乎总是替代适当的设计,IMO。) -
您正在控制传递给
calculate的值,因此通过将某些值传递给您的组件,您将期望它以可预测的方式运行。测试这些场景不要打扰测试计算本身。