我有一个React应用程序可以执行大量的API调用,并且我正在为它们编写单元测试。
class App extends Component {
componentDidMount: () => axios.get('api/data', this.doSomething)
...
}
现在我想用模拟的API编写单元测试。我知道可以使用jest模拟API。是否有充分的理由不选择以下更多功能模式:
getApp = api => {
class App extends Component {
componentDidMount: api.get('api/data', doSomething)
...
return App
}
然后我的常规应用使用getApp(axios)
,我的测试应用使用getApp(mockAxios)
?
我正在努力解决这个问题,因为我觉得Jest中的模拟需要牺牲代码质量。我需要模拟的不仅仅是API,并且经常最终将小功能放入微小的模块中,这样我就可以模拟出模块了。在没有模拟的情况下,我已将该功能保存在更大,更有机的模块中。