“Self-mocking”使用Rhino Mocks

3

我遇到过几次一个问题,但从未找到一个好的答案。假设我有一个类如下所示,其中一个方法调用同一类中的另一个方法:

public class Foo
{
    public int Bar()
    {
        if (Baz())
        {
            return 1;
        }
        else
        {
            return 2;
        }
    }

    public virtual bool Baz()
    {
        // behavior to be mocked
    }
}

我希望对方法Bar()的行为进行单元测试,这取决于Baz()的返回值。如果Baz()在另一个类中,我会调用PartialMock在那个类上设置模拟行为,但是当PartialMock用于测试类本身时似乎不起作用。有没有简单的方法来解决这个问题?我错过了什么吗?
我正在使用Rhino Mocks 3.5和.NET 2.0。
1个回答

3

您可以使用存根来模拟Baz方法。如果您正在使用.NET 3.5,则将使用lambda,但是在.NET 2.0中,您将使用匿名委托,如以下示例:

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());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接