0

COM+ インターフェイスのラッパー クラスがあり、それをモックする必要があります。

これは、Socket インターフェースのそのメソッドの署名です

int MakeRequest(object ServiceId, object Host, object Port,
                object Request, ref object pResponse);

そして、このように Moq を使用してモックを試みています

object pResponse = String.Empty;
var socket = new Mock<Socket>();
socket.Setup(x => x.MakeRequest(It.IsAny<int>(), It.IsAny<string>(), 
                                It.IsAny<int>(), It.IsAny<string>(),
                                ref pResponse))
            .Returns((int i, string s, int ii, string ss, object o) => 
            { 
                o = "Response";
                return 0;
            });

しかし、私が得るリターンの「o」引数については

The value passed to the method is never used because it is overwritten in the 
method body before being read

私は何が欠けていますか?

4

1 に答える 1

1

refキーワードのせいです。これらの質問を参照してください。2 番目のものはこれを試みていますが、ニーズを満たしていない可能性があります。

ラムダ式では ref または out パラメータを使用できません

Moq で out/ref パラメータを割り当てる

の使用を避けるためにリファクタリングできる場合はref、そうしてください。それ以外の場合は、スタブを手で転がします。

public class StubSocket
{
    int MakeRequest(object ServiceId, object Host, object Port, object Request, ref object pResponse)
    {
        pResonse = "Response";
        return 0;
    }
}
于 2013-01-26T15:50:33.817 に答える