所以问题如下。我正在使用 Rhino Mocks 3.6 对一个类 SampleClass 进行单元测试。对于测试,我使用了 InnerClass 的模拟,因为它在 SampleClass 构造函数中使用。InnerClass 有一个名为 TheMethod(ref string s1,ref string s2) 的方法。这是问题开始的地方。TheMethod(ref string,ref string) 对参数没有做任何事情,我希望 TheMethod 实际修改其中一个字符串 (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 没有改变,出于测试原因,我希望 TestMethod() 修改 s1 的值而不改变 TheMethod() 本身的主体
[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);
}