2009-06-18 68 views
4

所以我有一堆内部类,我试图嘲笑RhinoMocks。我加入以下行的AssemblyInfo.cs:用RhinoMocks嘲笑内部类

[assembly:InternalsVisibleTo(RhinoMocks.StrongName)] 

然而,这仍然不允许我嘲笑内部类;我从NUnit的以下错误消息:

MyTests.SomeTest: System.TypeLoadException:方法 '的someMethod' 上 型 'SomeType504cf40be6b444abfd417dccf5d6752' 从装配 “DynamicProxyGenAssembly2, 版本= 0.0.0.0,文化=中性, PublicKeyToken = null'正在重写从该 程序集不可见的 方法。

请注意,我正在使用RhinoMocks的“合并”版本(而不是下载选项'Castle Assembly')。我不知道Castle是如何合并到RhinoMocks中的,但是不应该让我的内部对RhinoMocks可见,同样也可以使Castle成为可见的(这是Rhino.Mocks.dll的一部分)?

回答

10

所以,我终于得到了一些时间,并制定了所有我需要做的是添加以下到AssemblyInfo.cs中:

+0

+1中提到的那样。我和Moq有同样的错误。他们的wiki显示了包含PublicKey标记的InternalsVisibleTo()。删除令牌工作。 – 2011-03-23 15:32:40

2

你的问题是RhinoMocks动态生成一个包含动态代理的程序集。所以让你的内部对RhinoMocks可见是没有用的。您看到的问题唯一可能的解决方案是:

  1. 使您希望模拟公开的类。
  2. 在您的测试项目程序集中手工编写一个模拟类并修改您的InternalVisibleTo属性以授予您的测试程序集访问权限。
+0

这是错误的,因为犀牛采用城堡动态代理生成你只需要让内部可见的代理就像在其他回答 – 2011-04-13 21:01:40