【发布时间】:2020-02-17 02:40:59
【问题描述】:
我已通过以下方式使 internal 类和函数对我的测试项目可见:
<ItemGroup>
<AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleToAttribute">
<_Parameter1>MyProject.Tests</_Parameter1>
</AssemblyAttribute>
</ItemGroup>
这工作正常,但现在我试图在我的测试中实现以下internal 接口以用于模拟目的:
internal interface IRepository
{
void Function1();
}
在我的测试代码中,我实现了上面的接口如下:
internal class MockRepository : IRepository
{
internal void Function1()
{
// Do something.
}
}
但是,我收到以下错误:
“MockRepository”没有实现接口成员“IRepository.Function1()”。 'MockRepository.Function1()' 不能实现接口成员,因为它不是公共的。 [MyProject.Tests]
看来InternalsVisibleToAttribute 只适用于类和函数。
我真的必须公开我的internal 接口以让测试模拟它,还是有办法保留它internal?
我之所以这么问,是因为我想让尽可能多的东西只有我的项目及其测试才能访问。
【问题讨论】:
-
您是否尝试过在模拟公众中制作
Function1? -
@Nkosi 谢谢!这条评论的最初版本对我来说不是很清楚,所以我并没有真正理解它。当我找到编辑后的版本时,我已经想通了。非常感谢您的帮助!
标签: c# testing interface mocking internals