如何使用NMock2模拟内部接口?

时间:2010-08-04 16:18:05

标签: .net unit-testing mocking nmock nmock2

如果我试试这个,我只是得到一个例外:

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

使接口公开是不可接受的解决方案。我不想改变我的API的可见性来测试它。

2 个答案:

答案 0 :(得分:3)

找到并记录解决方案。

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

事实证明,较新版本的NMock2(我在这里得到它:NMock2 Project)只需要一个而且它是不同的。

[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]

答案 1 :(得分:2)

我找到了答案:

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")]
相关问题