2

次のようなメンバーを含むインターフェイスがあります。

void ExecuteSqlCommand(string procedureName, SqlParameter[] parameters);

私はFakeItEasyを使用して、これのモックを作成し、クラスの1つに渡します。

私がテストしているコードはこのメソッドを呼び出してから、SqlParametersの1つの値をチェックします。メソッドが呼び出されたときに、FakeItEasyを使用してこのパラメーターのValueプロパティを設定するにはどうすればよいですか?

これはデータベースから個々の情報を取得するためのベストプラクティスではないことを理解していますが、既存のストアドプロシージャを使用しており、その一部にはOUTパラメータがあります。

4

1 に答える 1

6

あなたが言うように、これはおそらくベストプラクティスではありません。それはさておき、私はあなたがこのようなことをすることができると思います:

A.CallTo(() => fake.ExecuteSqlCommand(A<string>._, A<SqlParameter[]>._))
    .Invokes((string s, SqlParameter[] p) => p[someIndex].Value = yourValue);

または、読みにくいがより強力なオーバーロードを使用して、IFakeObjectCall直接アクセスします。

A.CallTo(() => fake.ExecuteSqlCommand(A<string>._, A<SqlParameter[]>._))
    .Invokes(callObject => callObject.GetArgument<SqlParameter[]>("parameters")[someIndex].Value = yourValue);
于 2011-09-15T18:28:55.257 に答える