«Самодовольно» с помощью Rhino Mocks - PullRequest
3 голосов
/ 15 декабря 2009

У меня есть ситуация, с которой я сталкивался несколько раз, но никогда не нашел хорошего ответа. Предположим, у меня есть класс, подобный следующему, где один метод вызывает другой в том же классе:

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 голосов
/ 15 декабря 2009

Вы можете использовать заглушки, чтобы высмеивать метод Baz. Если бы вы использовали .NET 3.5, вы бы использовали лямбда-выражения, но с .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());
...