4

所以我有一堆内部类,我试图用 RhinoMocks 模拟它们。我在 assemblyinfo.cs 中添加了以下行:

[assembly:InternalsVisibleTo(RhinoMocks.StrongName)]

但是,这仍然不允许我模拟内部类;我从 NUnit 收到以下错误消息:

MyTests.SomeTest:System.TypeLoadException:来自程序集“DynamicProxyGenAssembly2,Version=0.0.0.0,Culture=neutral,PublicKeyToken=null”的类型“SomeType504cf40be6b444abfd417dccf5d6752”上的方法“SomeMethod”正在覆盖从该程序集中不可见的方法。

请注意,我使用的是 RhinoMocks 的“合并”版本(而不是下载选项“带有 Castle 程序集”)。我不知道 Castle 是如何合并到 RhinoMocks 中的,但不应该让我的内部对 RhinoMocks 可见,同样让它对 Castle 可见(它是 Rhino.Mocks.dll 的一部分)?

4

2 回答 2

12

所以我终于有一些时间,发现我需要做的就是将以下内容添加到 AssemblyInfo.cs 中:

[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]
于 2009-08-03T08:42:11.563 回答
1

您的问题是 RhinoMocks 动态生成具有动态代理的程序集这一事实。因此,让 RhinoMocks 可以看到你的内部结构并没有帮助。我看到的唯一可能解决您的问题的方法是:

  1. 将您希望模拟的课程设为公开。
  2. 在您的测试项目程序集中手动编写一个模拟类并修改您的 InternalVisibleTo 属性以授予您的测试程序集访问权限。
于 2009-06-18T07:37:44.677 回答