我们使用 Moq 作为我们的模拟框架,问题是需要模拟的类型是使用接口(interface)完成的,问题是该接口(interface)中的任何内容都是公共(public)的,因此被视为我们公共(public) API 的一部分。
有没有办法必须有一个可模拟且不公开的成员?
最佳答案
如果我对您的理解正确,您希望能够将接口(interface)应用于类型以支持模拟,但这样做的方式是接口(interface)对您的代码的公共(public)消费者不可见。
好吧,一种选择是您可以实现 internal
接口(interface)并使用[assembly:InternalsVisibleToAttribute]
使单元测试可以访问内部类型。
[assembly:InternalsVisibleTo("MyUnitTestAssembly")]
internal interface ISomeInterfaceForMocking { ... }
public class MyMockableType : ISomeInterfaceForMocking { ... }
关于.net - 如何编写内部可模拟方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3113815/