假设我们有一个看起来像这样的方法:
public IEnumerable<Dog> GrowAll(this IEnumerable<Puppy> puppies)
{
if(subjects == null)
throw new ArgumentNullException("subjects");
foreach(var puppy in puppies)
yield return puppy.Grow();
}
如果我这样做测试:
Puppy[] puppies = null;
Assert.Throws<ArgumentNullException>(() => puppies.GrowAll());
测试将失败,说它
预期:
<System.ArgumentNullException>
但是是:null
我可以通过将测试更改为
Puppy[] puppies = null;
Assert.Throws<ArgumentNullException>(() => puppies.GrowAll().ToArray());
这就是你通常的做法吗?或者有没有更好的方法来编写测试?或者也许是编写方法本身的更好方法?
尝试对内置Select
方法做同样的事情,即使没有 aToArray
或类似的东西它也失败了,所以显然你可以做些什么......我只是不知道是什么:p