私にはメソッドデコレータがあります。typescriptデコレータを模擬することは可能ですか?
class Service {
@LogCall()
doSomething() {
return 1 + 1;
}
}
は、ユニットテストで@LogCall
デコレータを模擬することが可能ですので、嘲笑ロジックを適用または適用されないのだろうか?
デコレータを更新してwindow.disableLogDecorator
フラグをチェックしてテスト中にそのフラグをオフにすることは可能ですが、これは再利用可能な解決策ではありません。
私たちのユースケースは、もちろん、はるかに複雑な提供の例よりもある - 我々は、彼らが特定の状態の部分が更新されたときにのみ呼ばれているようngrx/store
セレクタに適用される@memoizeSelector
を持っています。私たちのテストで状態を模擬する方法のために、@memoizeSelector
は私たちのテストを中断しますので、理想的にはそれを無効にしたいと思います。
はい、可能ですが、デコレータをエクスポートするモジュールをモックする必要があります。モジュールローダーを使用すると、十分に柔軟性があるという条件で、これを行うことができます。たとえば、SystemJSではこれを非常に簡単に行うことができます。覚えておいてください、デコレータは単なる関数です。 –