c# - 在最小起订量中模拟被测对象的方法?

标签 c# mocking moq

我想测试我的类的方法 A,但不调用通常由 A 调用的实际方法 B。那是因为 B 有很多我现在不想测试的外部交互。

我可以为 B 调用的所有服务创建模拟,但这需要相当多的工作。我宁愿模拟 B 并让它返回示例数据。

这可能与 Moq 框架有关吗?

最佳答案

是的,有一个问题! 您必须确保方法 B 是虚拟的并且可以被覆盖。

然后,将模拟设置为在未提供设置时调用基本方法。然后设置 B,但不设置 A。因为 A 没有设置,实际的实现将被调用。

var myClassMock = new Mock<MyClass>();
myClassMock.Setup(x => x.B()); //mock B

myClassMock.CallBase = true;

MyClass obj = myClassMock.Object;
obj.A(); // will call the actual implementation
obj.B(); // will call the mock implementation

在幕后,Moq 将动态创建一个扩展 MyClass 并覆盖 B 的类。

关于c# - 在最小起订量中模拟被测对象的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21460834/

相关文章:

c# - Xamarin.Form FlowListView - 刷新列表时出现 NullReferenceException

Laravel:如何模拟一个类

c# - 最小起订量要求?违背目的?

c# - EF 通用存储库和工作单元 - 使用 Moq 进行单元测试

c# - 如何在 C# 中测试 COM 依赖对象

c# - 动态编译的项目丢失资源

c# - 我可以从 C# 在远程应用程序域中注入(inject)线程吗

c# - ASP.NET MVC Identity Google 通过 GetExternalLoginInfo 提供的 AccessToken 访问用户配置文件

c# - 使用 NSubstitute 检查接听电话的数量是否在范围内

http - Karma 测试中出现错误 : No provider for HttpService!