我正在閱讀一些討論DomainEvent模式的文章。但我有一個問題如何編寫測試。DomainEvent爲什麼不損害可測試性?
例如:
public void commitTo(Spring aSpring) {
...
DomainEventPublisher.intance().publish(new BacklogItemCommitted(.......))
}
如何測試呢?很難嘲弄DomainEventPublisher,因爲它是一個單身人士。我發現在Working effectively with legacy code一個解決方案:
public class DomainEventPublisher {
private DomainEventPublisher singleton;
public void setSingleton(DomainEventPublisher singleton) {
this.singleton = singleton;
}
}
添加測試雙和disipline團隊不使用它在生產代碼的注射方法。但是這似乎是可測性的缺點。
+ 1感謝:
現在在您的測試只是一個返回的模擬
DomainEventPublisher
覆蓋getDomainEventPublisher()
方法您。我對.net知之甚少,並完全與測試代碼片段「p => P.Customer」或類似的東西混淆。它看起來像我需要一個Singleton引導一個ApplicationContext用於生產代碼中的依賴注入。 – Hippoom