【发布时间】:2011-09-05 09:31:49
【问题描述】:
我们需要存根一个泛型方法,该方法将使用匿名类型作为类型参数来调用。考虑:
interface IProgressReporter
{
T Report<T>(T progressUpdater);
}
// Unit test arrange:
Func<object, object> returnArg = (x => x); // we wish to return the argument
_reporter.Stub(x => x.Report<object>(null).IgnoreArguments().Do(returnArg);
如果在被测方法中对 .Report
是否可以在不指定类型参数的情况下对泛型方法进行存根?
【问题讨论】:
-
有点 OT 但被调用者如何使用匿名类型的对象?我从未见过这样的用例。只是尝试在这里查看泛型方法的选择..
-
好问题 ;) 重点不在于 Report 方法对参数做任何事情,而只是返回它。它有助于在我们的 LINQ 表达式中进行链接。因此,我们当然可以重写它,但我们认为我们应该试一试。
-
就是这么说的。如果您创建另一个具有相同顺序和属性类型的匿名类型,它们应该是相同的类型。也许这可以帮助您.. 在您的测试中创建一个类似的虚拟类型并对其执行 GetType() 以检索类型...但就像我之前所说的.. 看起来很复杂/聪明。简单是首选:)
-
@Gishu - 嘿,这很有趣。它会有 same 类型吗?我一定会仔细研究一下。
-
已确认.. msdn.microsoft.com/en-us/library/bb397696.aspx 见备注部分 - 第 2 段
标签: c# unit-testing generics rhino-mocks