.net - 如何编写内部可模拟方法

标签 .net interface mocking moq

我们使用 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/

相关文章:

c# - 在 Caliburn Micro 的操作中将枚举作为参数传递

.net - 我可以使用带有 mvc 4 的代码优先 Entity Framework 将日期时间用作键吗?

c# - 如何使用 .NET 将遗留 (OLE) 颜色转换为 (A)RGB?

google-app-engine - 将字符串数据转换为在 Go AppEngine 上读取的结构 : Inserted on Java AppEngine (Objectify),

android - AIDL接口(interface)参数值中的"In/out/inout"?

java - EasyMock:无效方法

.net - 如何减少网络上运行的 .Net dll 数量

unit-testing - 在 Spock 单元测试中,没有调用模拟方法

Python内部实体模拟

c# - 使用接口(interface)和显式实现的函数重载