使用RhinoMocks模拟内部类

时间:2009-06-18 01:58:48

标签: rhino-mocks castle internalsvisibleto

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

[assembly:InternalsVisibleTo(RhinoMocks.StrongName)]

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

  

MyTests.SomeTest:   System.TypeLoadException:方法   类型上的'SomeMethod'   'SomeType504cf40be6b444abfd417dccf5d6752'   从装配   “DynamicProxyGenAssembly2,   版本= 0.0.0.0,文化=中立,   PublicKeyToken = null'正在覆盖a   从那里看不到的方法   组装

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

2 个答案:

答案 0 :(得分:10)

所以我终于得到了一些时间并且确定我需要做的就是将以下内容添加到AssemblyInfo.cs中:

[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]

答案 1 :(得分:2)

您的问题是RhinoMocks动态生成带有动态代理的程序集。因此,让你的内部对RhinoMocks可见是没有用的。我看到的唯一解决问题的方法是:

  1. 制作你想要公开的课程。
  2. 在测试项目程序集中手动编写模拟类,并修改InternalVisibleTo属性以授予测试程序集访问权限。