【发布时间】:2009-07-19 08:55:44
【问题描述】:
我正在编写一个需要检查一些参数的方法,如果它们被验证,则返回一个 IEnumerable。例如
public static IEnumerable<double> GetEnum(int param)
{
if (!IsValidParameter(param))
{
throw new Exception();
}
while(true)
{
yield return 5.0;
}
}
但是,我相信由于延迟评估,当我使用错误参数运行单元测试,但还没有调用任何 IEnumerable 方法时,不会抛出异常。
[Test]
[ExpectedException(typeof(Exception))]
void Test()
{
var ie = GetEnum(bad_param);
}
我可以通过在另一个函数(比如 Foo)中构建 IEnumerable 来解决问题,然后检查 GetEnum 中的参数并调用 Foo,但有没有无需创建多个函数的解决方案?
干杯,尤尔根
【问题讨论】: