c# - 如何使用 moq 测试/模拟外部代码或外部依赖项?
问题描述
我正在使用 Moq 在单元测试中模拟我的代码。在没有外部依赖的情况下模拟代码是可以的。下面的代码是我嘲笑的最后一个依赖项
/// <summary>
/// Executes the request.
/// </summary>
/// <param name="booking">The booking.</param>
protected override void ExecuteRequest(BookingModel.Booking booking)
{
var request = this.CreateRequest(this.TravelContext, booking);
using (var proxy = this.TravelContext.CreateProxy<IMonitorBookingServiceProxy>())
{
var response = proxy.AutoCancelBooking(request);
this.AddResponseInfos(response.ResponseInfos);
}
}
我像这样模拟上面的代码
// mock the IMonitorBookingServiceProxy
Mock<IMonitorBookingServiceProxy> mockedMonitorBookingContext = new Mock<IMonitorBookingServiceProxy>() { DefaultValue = DefaultValue.Mock };
mockedMonitorBookingContext.Setup(x => x.AutoCancelBooking(It.IsAny<AutoCancelBookingRequest>())).Returns(autoCancelBookingResponse).Verifiable();
ProxyFactory.Configure<IMonitorBookingServiceProxy>(mockedMonitorBookingContext.Object);
它正确地向我返回了响应。但我的问题是函数内部有很多场景和类要测试proxy.AutoCancelBooking(request);
。
我如何测试或模拟该类和依赖项。
解决方案
您说在请求函数中需要测试很多IMonitorBookingServiceProxy.AutoCancelBooking
场景。您是要测试其中的功能IMonitorBookingServiceProxy.AutoCancelBooking
还是要ExecuteRequest
根据返回的不同响应测试功能IMonitorBookingServiceProxy.AutoCancelBooking
?
推荐阅读
- android - android studio 中的 JKS 文件位置未更新
- macos - source .zshrc 中的文件未找到该文件
- javascript - 自定义 JS 使用来自散景的独立 html 文档中的单选组按钮在数据帧之间过滤/切换
- typescript - “任何数组”的约束是什么?
- ios - 在 iOS 中终止应用程序时,Voip 来电不起作用
- javascript - 循环遍历对象数组并按 ID 引用返回总和
- neo4j - 识别图遍历中的路径
- javascript - javascript中数组对象内的字体修改
- json - 如何显示自定义验证错误消息
- java - 使用 Java 的 Quartz 作业调度程序,在未执行作业的情况下停留在待机模式