我申請TDD給我的第一事件中心的項目(CQRS,事件採購等)和我TDD行爲測試正在根據給定,何時,預計Greg Young的的簡單測試框架寫我的測試。我的測試夾具接受命令,命令處理程序和聚合根,然後測試輸出的事件。沒有getter/setter方法
CommandTestFixture<TCommand, TCommandHandler, TAggregateRoot>
例如這裏是一個典型的測試
[TestFixture]
public class When_moving_a_group :
CommandTestFixture<MoveGroup, MoveGroupHandler, Foo>
我很高興與整體,但與上面的測試,我已經打了一個問題,這些測試。聚合根包含一組組。命令MoveGroup
重新排列集合,從&索引。我設置了測試並聲稱使用正確的數據生成了正確的GroupMoved
事件。
作爲一個額外的測試,我需要斷言組合集合的重新排序實際上正確發生了嗎?當聚合根沒有公共getter/setter時,我該如何做到這一點。我可以添加一個方法來檢索特定索引的組,但是這不是簡單的可破解封裝嗎?
這是怎麼回事?
EDIT
的基團的重新排序發生在對總結根GroupMoved處理程序。
private void Apply(GroupMoved e)
{
var moved = groups[e.From];
groups.RemoveAt(e.From);
groups.Insert(e.To, moved);
}
有趣。目前,排序對後續的命令沒有影響,我可以看到。這僅僅是用戶給予優先考慮的美學改變。我的更新,刪除,編輯命令不會計劃任何狀態,我可以測試,所以我不能使用這些通道。重新進行低級測試時,AR上的句柄方法實際上是重新排序,但我仍然沒有看到如何在當前實現中的較低級別上進行測試。 – madcapnmckay 2012-04-09 03:38:12
@madcapnmckay如果該組未被重新排序,會在您的應用程序中破壞什麼? – 2012-04-09 05:19:03
目前我猜不出什麼。我明白你在說什麼,如果什麼都沒有中斷,爲什麼我們需要一個測試。如果有什麼東西要突破的話,我可以在休息時針對測試。 – madcapnmckay 2012-04-09 05:29:32