我有一种情况,我遇到过好几次,但从来没有找到好的答案。假设我有一个如下所示的类,其中一个方法调用同一个类中的另一个方法:
public class Foo
{
public int Bar()
{
if (Baz())
{
return 1;
}
else
{
return 2;
}
}
public virtual bool Baz()
{
// behavior to be mocked
}
}
我想根据 Baz() 的返回值对方法 Bar() 的行为进行单元测试。如果 Baz() 在不同的类中,我会调用 PartialMock 以在该类上设置模拟行为,但是当在测试类本身上使用 PartialMock 时它似乎不起作用。是否有捷径可寻?我错过了什么?
我正在使用 Rhino Mocks 3.5 和 .NET 2.0。
最佳答案
您可以使用 stub 来模拟 Baz 方法。如果您使用的是 .NET 3.5,您将使用 lambda,但对于 .NET 2.0,您将使用匿名委托(delegate),如下例所示:
Foo f = MockRepository.GenerateStub<Foo>();
// lambda:
// f.Stub(x => x.Baz()).Return(true);
// anonymous delegate:
f.Stub(delegate(Foo x) { return x.Baz(); }).Return(true);
Console.WriteLine(f.Bar());
关于unit-testing - "Self-mocking"使用 Rhino Mocks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1908280/