Вымывание метода, который возвращает закрытый класс в RhinoMocks
Запуск этого кода:
_foo = MockRepository.GenerateStub<IBar>();
_foo.Stub(x => x.Foo()).Return("sdf");
При
public interface IBar
{
string Foo();
}
public class Bar : IBar
{
public string Foo()
{
throw new NotImplementedException();
}
}
throws NotSupportedException - "Невозможно создать mocks закрытых классов". Я понимаю, почему вы не можете издеваться над закрытым классом (хотя есть решения в TypeMock), но какая проблема с издевательством над классом, который возвращает закрытый класс (string)?
Ответы
Ответ 1
Rhino Mocks, похоже, ловит и обрабатывает это исключение. Вы видите это только в отладчике VS.NET, если вы включили исключения в качестве контрольных точек. Похоже, что вы можете безопасно продолжать работу за этой точкой останова исключения, и все работает так, как ожидалось.
Ответ 2
Это происходит, когда вы не получили "Только мой код" в разделе "Инструменты- > Параметры- > " Отладка- > Общие ", и у вас есть исключения CLR," Брошенные ", выбранные в разделе" Отладка- > Исключения ". Самый простой способ исправить это - включить" только мой код "в разделе" Сервис- > Параметры- > "Отладка- > Общие".
![enter image description here]()
Ответ 3
Ваш код работает правильно. Вероятно, у вас есть другой код, который не отображается, что вызывает проблему. Опубликуйте весь свой unit test здесь, и мы будем диагностировать проблему для вас.
Ответ 4
У меня такая же проблема, это должна быть какая-то настройка отладки студии VS или некоторые недостаточные права доступа для издевательства носорогов, я думаю.
Я уверен, что это не тот код, который вызывает это.
Ответ 5
Во-вторых, это не проблема с кодом.
Это настройка отладки VS.
Я получаю такое же исключение, когда отлаживаю код ниже, пытаясь отправить Arg.Is.Anything в качестве параметра в заглушку.
mockPermissionManager.Stub(item => item.HasAccess(Arg<string>.Is.Anything)).Return(true);
Исключение обрабатывается, а код /mocking работает, как ожидалось, просто F5