Как я могу издеваться над внутренним интерфейсом, используя NMock2?
-
25-09-2019 - |
Вопрос
Если я попробую это, я просто получаю исключение:
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")]
Не связан с StackOverflow