Как я могу издеваться над внутренним интерфейсом, используя NMock2?

StackOverflow https://stackoverflow.com/questions/3407552

Вопрос

Если я попробую это, я просто получаю исключение:

System.TypeLoadException : Access is denied: 'Namespace.IInternalInterface'.

Создание общественности интерфейса не является приемлемым решением. Я не хочу менять видимость моего API, чтобы проверить его.

Это было полезно?

Решение 2

Я нашел ответ на это:

NMock2, (и другие издевалки). Созданете объекты издевательства в динамически сгенерированных сборочках. Для того, чтобы структуру издевания для создания объекта MOCK, внутренние органы должны быть видны этими собраниями.

Просто добавьте следующие объявления в класс AssumberInfo.cs для тестирования модуля:

// Allow unit test and mock assemblies to see internal members.
[assembly: InternalsVisibleTo("MyAssembly.UnitTest")]
[assembly: InternalsVisibleTo("NMock2")]
[assembly: InternalsVisibleTo("Mocks")]
[assembly: InternalsVisibleTo("MockObjects")]

Другие советы

Нашел и задокументировал решение.

http://www.rhyous.com/2012/05/03/nmock2-internal-interface/

Оказывается, новая версия NMock2 (я получил это здесь: Проект NMock2) нужна только один, и это другое.

[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top