具有泛型返回类型<t> </t>的Molling静态方法

时间:2012-04-25 18:32:53

标签: c# mocking moles

我正在尝试在一个非常庞大且膨胀的系统上实现一个使用单元测试的框架,主要问题是70%的系统是用静态方法实现的。我是如何到达Moles的,我非常有信心达到目标(我很接近)。

我现在遇到的问题是我正在尝试使用通用参数来驱动静态方法:

public static T ExecScalar<T>(IDbConnection cx, string commandText, IDbTransaction tx, IEnumerable<IDbDataParameter> parameters)
在网上搜索我发现此论坛消息:

http://social.msdn.microsoft.com/Forums/uk/pex/thread/3faadca2-a26f-449c-942e-d800a6079e02

这正是我的问题,建议阅读第10页的手册。

我已经阅读了第10页的手册,但它正在谈论的是抄写而不是诽谤。我试图应用所描述的解决方案,但如果我把:

Ktcar.Cs.Dal.DB.Moles.MDALDB.ExecScalarIDbConnectionStringIDbTransactionIEnumerableOfIDbDataParameter<int> = delegate(IDbConnection conn, String command, IDbTransaction trx, IEnumerable<IDbDataParameter> parameters)

我明白了:

“只有赋值,调用,递增,递减和新对象表达式才能用作语句”

我也尝试过:

Ktcar.Cs.Dal.DB.Moles.MDALDB.ExecScalarIDbConnectionStringIDbTransactionIEnumerableOfIDbDataParameter<T> = delegate(IDbConnection conn, String command, IDbTransaction trx, IEnumerable<IDbDataParameter> parameters)

我得到同样的错误

或者:

Ktcar.Cs.Dal.DB.Moles.MDALDB.ExecScalarIDbConnectionStringIDbTransactionIEnumerableOfIDbDataParameter = null;

然后我得到:

“无法分配给'ExecScalarIDbConnectionStringIDbTransactionIEnumerableOfIDbDataParameter',因为它是'方法组'”

拜托,有人可以帮助我们了解如何使用Generic Type输出模拟静态方法吗?

1 个答案:

答案 0 :(得分:1)

试试这个:

Ktcar.Cs.Dal.DB.Moles.MDALDB.ExecScalarIDbConnectionStringIDbTransactionIEnumera‌​bleOfIDbDataParameter<int>((IDbConnection conn, String command, IDbTransaction trx, IEnumerable<IDbDataParameter> parameters) => { return 5; });