我申请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