egg-plugin在不同的环境下如何避免undefined?
发布于 4 年前 作者 helloworldwen 4333 次浏览 来自 问答

目前我们的代码中有一个消息推送的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,但是里面的方法实现都是空的。


对于以上的场景,有没有什么比较优雅的解决方案呢?我感觉方法一和方法二都不太理想,要做的事情太多了。

回到顶部