DomainEventパターンについて説明している記事をいくつか読んでいます。しかし、それを使ってテストを書く方法について質問があります。
例えば:
public void commitTo(Spring aSpring) {
...
DomainEventPublisher.intance().publish(new BacklogItemCommitted(.......))
}
どうやってテストするのですか?シングルトンであるため、DomainEventPublisher をモックするのは困難です。レガシーコードを効果的に使用するで解決策を見つけました:
public class DomainEventPublisher {
private DomainEventPublisher singleton;
public void setSingleton(DomainEventPublisher singleton) {
this.singleton = singleton;
}
}
テスト用の注入メソッドを追加し、運用コードで使用しないようにチームを規律します。しかし、これはテスト容易性の欠点のようです。