鉴于我有方法装饰器,例如是否有可能模拟打字稿装饰?
class Service {
@LogCall()
doSomething() {
return 1 + 1;
}
}
是否有可能嘲笑在单元测试@LogCall
装饰,所以它不会被应用或与嘲笑逻辑应用?
我正在寻找任何打字稿装饰的通用解决方案,因为它是可能更新您的装饰检查window.disableLogDecorator
标志或在测试过程中关闭它,但这不是可重用的解决方案。
我们使用的情况下,当然,比例如,在更为复杂的规定 - 我们有适用于ngrx/store
选择所以他们只在特定状态的部分更新称为@memoizeSelector
。由于我们在测试中模拟状态,@memoizeSelector
打破了我们的测试,所以我们希望禁用它。
是的,这是可能的,但你需要模拟导出装饰器的模块。你可以使用你的模块加载器来做到这一点,只要它足够灵活。例如,SystemJS可让您轻松完成此操作。请记住,装饰器只是一个功能。 –