0
所以,我有一个问题嘲笑私人方法。从我所看到的一切应该起作用,但不是。嘲笑私人方法
让我们从基础开始 - 这是测试
public sealed class UnderTest
{
private bool MockPrivate(string name)
{
[snip]
}
private string MethodUnderTest(ParameterHolder parameters)
{
if (!this.MockPrivate(parameters.Parameter2))
{
return null;
}
[Snip]
}
[Snip]
}
public sealed class ParameterHolder
{
public ParameterHolder (bool parameter1, string parameter2)
{
this.Parameter1 = parameter1;
this.Parameter2 = parameter2;
}
public bool Parameter1
{
get;
private set;
}
public string Parameter2
{
get;
private set;
}
}
下面的代码是测试方法
public void Test_UnderTest_MethodUnderTest()
{
UnderTest testClass;
ParameterHolder parameters;
dynamic h;
testClass = new UnderTest();
parameters = Isolate.Fake.Instance<ParameterHolder>(Members.CallOriginal);
Isolate.WhenCalled(() => parameters.Parameter1).WillReturn(true);
Isolate.WhenCalled(() => parameters.Parameter2).WillReturn("parameter2value");
h = testClass.AsDynamic();
Isolate.WhenCalled(() => h.MockPrivate((string)null)).WillReturn(true);
Assert.IsNotNull(h.MethodUnderTest(parameters));
}
我也试图在隔离调用更改为:
Isolate.WhenCalled(() => h.MockPrivate("parameter2value").WillReturn(true);
and
Isolate.WhenCalled(() => h.MockPrivate(parameters.Parameter2).WillReturn(true);
在所有情况下,都会执行MockPrivate方法,而不是返回模拟的True值。
任何帮助,将不胜感激。