1

単体テストを使用するためのフレームワークを非常に大きく肥大化したシステムに実装しようとしています。主な問題は、システムの 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)

私は得る:

「ステートメントとして使用できるのは、割り当て、呼び出し、インクリメント、デクリメント、および新しいオブジェクト式のみです」</p>

私も試しました:

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」に割り当てることができません」</p>

Generic Type 出力を使用して静的メソッドをモックする方法について、誰か助けてもらえますか?

4

1 に答える 1

1

これを試してください:

Ktcar.Cs.Dal.DB.Moles.MDALDB.ExecScalarIDbConnectionStringIDbTransactionIEnumera‌​bleOfIDbDataParameter<int>((IDbConnection conn, String command, IDbTransaction trx, IEnumerable<IDbDataParameter> parameters) => { return 5; }); 
于 2012-05-04T12:30:54.593 に答える