egg-plugin在不同的环境下如何避免undefined?
目前我们的代码中有一个消息推送的plugin,代码中会存在很多的app.push.xxxx
的调用。我们不想在unittest
的时候使用这个plugin,于是我们根据文档,添加了下面的文件和代码:
// plugin.unittest.ts
const plugin: EggPlugin = {
push: {
enable: false
},
}
export default plugi
因为代码有app.push.xxxx
的调用,而单元测试没有使用该push插件,就会导致app.push
为undefined。目前我们的解法方法有下面两种:
方法一
通过sinon
在单元测试的代码上hook所有的app.push.xxxxx
方法,例如:
sinon.stub(app.push, 'send')
方法二
在单元测试中,使用一个和push一模一样的plugin,但是里面的方法实现都是空的。
对于以上的场景,有没有什么比较优雅的解决方案呢?我感觉方法一和方法二都不太理想,要做的事情太多了。