首先创建一个测试方法, 并设定球员年龄小于16岁时, IPhysicalExamination会在调用IsHealthy()方法时抛出异常:
?...随后在球员审批的方法里, 需要捕获这个异常, 并返回相应的结果:
?
这个测试会通过:
?
上面使用的是泛型的版本来抛出异常, 也可以不使用泛型, 直接抛出异常:
?...设定连续调用的不同返回值
使用SetupSequence()方法可以为mock对象的成员在连续调用的时候每次都返回指定的值(或抛出指定的异常):
?...该测试执行时, 第一次调用IsHealthy()方法时, 该方法返回true, 体检通过; 而第二次调用IsHealthy()方法时, 返回false, 体检不通过.
这个测试是会通过的:
?...Linq to Mocks
我们可以把之前写的设定代码使用Linq的方式来写:
?
这里要使用Mock.Of()方法. 参数的lambda表达式里面可以设定mock对象成员的返回值.