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

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

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

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

Ответы [ 2 ]

3 голосов
/ 04 мая 2012

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

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

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

[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]
2 голосов
/ 04 августа 2010

Я нашел ответ на этот вопрос:

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

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

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