我正在阅读一些讨论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;
}
}
为测试替身添加注入方法并约束团队不要在生产代码中使用它。但这似乎是可测试性的缺点。