Как издеваться над защищенными виртуальными членами с помощью Rhino.Mocks? - PullRequest
6 голосов
/ 06 апреля 2010

Moq позволяет разработчикам издеваться над защищенными членами.Я искал ту же функциональность в Rhino.Mocks , но не смог ее найти.

Вот пример со страницы Moq Quick Start о том, как создавать защищенный метод.

// at the top of the test fixture
using Moq.Protected()

// in the test
var mock = new Mock<CommandBase>();
mock.Protected()
     .Setup<int>("Execute")
     .Returns(5);

// if you need argument matching, you MUST use ItExpr rather than It
// planning on improving this for vNext
mock.Protected()
    .Setup<string>("Execute",
        ItExpr.IsAny<string>())
    .Returns(true);

Дайте мне знать, если я гоняюсь за тем, что не выходит.

Ответы [ 2 ]

4 голосов
/ 07 апреля 2010

Я считаю, что эта функциональность не существует в Rhino Mocks.

Почему вы пытаетесь издеваться над защищенными членами? Почему бы просто не проверить класс в целом? В качестве альтернативы вы можете создать подкласс вашего тестового класса и вручную создать «поддельные» защищенные методы.

2 голосов
/ 18 сентября 2012

Мы создаем метод protected как internal, а затем открываем внутренние компоненты для проекта модульного тестирования и макетов носорога, добавляя следующие строки в AssemblyInfo:

[assembly: InternalsVisibleTo("YourNamespace.TestProjectName")]
[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]

доставляет нам удовольствие

...