首先应该做的是在TransferApproval的构造函数里判断参数是否为null, 如果为null的话应该抛出ArgumentNullException:
?
这是更恰当的异常....这样的话, 在测试的时候, 抛出的就是ArgumentNullException了, 它可以更恰当的表达程序出现的问题:
?
现在我们可以使用mock版本的依赖项来代替null了:
?...还是红色的, 但现在是测试没通过, 并不是抛出异常.
测试没通过的意思就是期待值和实际返回值不符....MockBehavior.Loose, 即使方法没有被预先设置, 调用它的时候也不会抛出异常. 它会返回该方法返回类型的默认值....如果上例使用Strict Mock, 那么将会抛出Exception:
?
下面我把一个测试改为Strict Mock, 并取消了对IsHealthy()方法的设置:
?