Дразнить внутренние классы с помощью RhinoMocks - PullRequest
4 голосов
/ 18 июня 2009

Итак, у меня есть несколько внутренних классов, которые я пытаюсь высмеять с помощью RhinoMocks. Я добавил следующую строку в assemblyinfo.cs:

[assembly:InternalsVisibleTo(RhinoMocks.StrongName)]

Однако, это все еще не позволяет мне высмеивать внутренние классы; Я получаю следующее сообщение об ошибке от NUnit:

MyTests.SomeTest: System.TypeLoadException: метод SomeMethod по типу 'SomeType504cf40be6b444abfd417dccf5d6752' из сборки «DynamicProxyGenAssembly2, Версия = 0.0.0.0, Культура = нейтральная, PublicKeyToken = null 'переопределяет метод, который не виден из этого сборка.

Обратите внимание, что я использую «объединенную» версию RhinoMocks (а не вариант загрузки «со сборками Castle»). Я не знаю, как Castle был объединен с RhinoMocks, но не следует ли сделать мои внутренние элементы видимыми для RhinoMocks, аналогично сделать его видимым для Castle (который является частью Rhino.Mocks.dll)?

Ответы [ 2 ]

10 голосов
/ 03 августа 2009

И вот, наконец, у меня появилось время, и я решил, что все, что мне нужно было сделать, это добавить следующее в AssemblyInfo.cs:

[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]
2 голосов
/ 18 июня 2009

Ваша проблема в том, что RhinoMocks динамически генерирует сборку с динамическими прокси. Так что сделать ваши внутренние элементы видимыми для RhinoMocks не помогает. Единственные возможные решения вашей проблемы, которые я вижу:

  1. Сделайте классы, которые вы хотите издеваться, публичными.
  2. Напишите макет вручную в сборке ваших тестовых проектов и измените атрибут InternalVisibleTo, чтобы предоставить доступ к тестовой сборке.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...