というわけで問題は以下の通り。Rhino Mocks 3.6 を使用してクラス SampleClass の単体テストを行っています。テストでは、SampleClass コンストラクターで使用される InnerClass のモックを使用します。InnerClass には TheMethod(ref string s1,ref string s2) というメソッドがあります。ここから問題が始まります。TheMethod(ref string,ref string) はパラメータで何もしていないので、TheMethod に文字列の 1 つ (s1) を実際に変更させたいと思います。Rhino Mocks を使用して、そのようなことを行うことは可能ですか? もしそうなら、どうやって?いつ呼び出されましたか? Do() ハンドラ? 私は無知です。ここに疑似コードがあります
Class SampleClass
{
Public String SampleClassMethod()
{
string s1 = string.Empty;
string s2 = string.Empty;
string s_final = this.InnerClass.TheMethod(ref s1, ref s2); //TheMethod() which is doing
//nothing with the given strings
if (s_final == "something")
return s1;
}
}
その結果、s1 は変更されず、テスト上の理由から、TheMethod() 自体の本体を変更せずに TestMethod() で s1 の値を変更したいと考えています。
[TestMethod]
public void TestMethod1()
{
//generating mocks
//SampleClass target; //tested class object
Expect.Call(InnerClassMock.TheMethod(
ref Arg<string>.Ref(Rhino.Mocks.Constraints.Is.Equal(s1), string1).Dummy,
ref Arg<string>.Ref(Rhino.Mocks.Constraints.Is.Equal(s1), string1).Dummy)).IgnoreArguments();
string temp = target.SampleClassMethod();
Assert.AreEqual("1234", temp);
}