添加的这个属性在业务上的意思就是体检室是否可以使用. 如果不可以使用的话, 那么球员的转会操作应该被推迟.
所以还需要为转会结果枚举添加一个推迟:
?...就是从内到外一层一层的mock.
这么做是没问题的, 测试也会通过:
?
但是这样做很麻烦, 而Moq则提供了一种简单的方式来处理这种多层的/递归的mock:
?
这样写即可. 测试同样会通过:
?...但是DefaultValue这个属性只对引用类型起作用(对值类型不起作用), 像这种递归的mock, 它会递归的创建所需的引用类型, 但是最后的IsAvailable这个值类型是不起作用的....不过测试仍然是可以通过的, 因为我改逻辑了:
?
注意, 这个默认值只对宽松(Loose) mock, 起作用.针对Strict mock, 仍然需要设定最后一层属性的值....然后在审批类里, 我设置了这个属性的值:
?
上面的代码也就是说, 我的mock对象的某个属性在测试的时候它的值会发生变化. 而Moq可以记住这些mock属性的变化的值.....
新写一个测试:
?