而由于Moq对依赖项进行了包装, 所以要获得实际的mock依赖项, 我们需要使用mockExamination.Object属性. 而这个属性的类型就是IPhysicalExamination....MockBehavior是一个枚举, 它有三个值:
MockBehavior.Strict, 如果mock对象上的方法没有被预先设置好, 那么测试中调用该方法的时候就会抛出异常....如果上例使用Strict Mock, 那么将会抛出Exception:
?
下面我把一个测试改为Strict Mock, 并取消了对IsHealthy()方法的设置:
?...而测试时会抛出MockException:
?
在对方法进行设置后, 测试就会通过:
?
?...可以感觉到:
Loose Mock, 可以少写一些设定代码, 可以返回默认值, 不易让测试中断
Strict Mock, 需要写跟多的设定代码, 每个被调用的方法都需要进行设定, 所以也更容易让测试中断