c# - 单元测试服务起订量设置不返回值
问题描述
我正在尝试为我的服务层编写单元测试。这是我正在写的测试。我正在尝试回复,但我遇到了嘲笑问题。当我调试 saveCustomerRecordTextFile.WriteToDiskCustomerRecordAsync 方法时返回 null 并且我不确定我做错了什么。
public class InvitationServiceTests
{
private readonly Mock<ITranformToCustomerDistanceRecord> _customerRecordFileReader;
private readonly Mock<ISaveInviteeRecord> _customerRecordFileOutputWriter;
private readonly Mock<ICustomerDistanceFromDublinOffice> _distanceFromDublinOffice;
private readonly Mock<ISaveCustomerRecord> _saveCustomerRecordTextFile;
public InvitationServiceTests()
{
_customerRecordFileReader = new Mock<ITranformToCustomerDistanceRecord>();
_customerRecordFileOutputWriter = new Mock<ISaveInviteeRecord>();
_distanceFromDublinOffice = new Mock<ICustomerDistanceFromDublinOffice>();
_saveCustomerRecordTextFile = new Mock<ISaveCustomerRecord>();
}
[Fact]
public void InvitationService_return_statusOk()
{
_saveCustomerRecordTextFile.Setup(c => c.WriteToDiskCustomerRecordAsync(It.IsAny<IFormFile>())).Returns(Task.FromResult(It.IsAny<string>()));
var invitationService = new InvitationService(_customerRecordFileReader.Object,
_customerRecordFileOutputWriter.Object,
_distanceFromDublinOffice.Object,
_saveCustomerRecordTextFile.Object);
var s = invitationService.InviteToDublinOfficeAsync(It.IsAny<IFormFile>());
}
代码实现:
public class InvitationService : IInvitationService
{
private readonly ITranformToCustomerDistanceRecord _customerRecordFileReader;
private readonly ISaveInviteeRecord _customerRecordFileOutputWriter;
private readonly ICustomerDistanceFromDublinOffice _distanceFromDublinOffice;
private readonly ISaveCustomerRecord _saveCustomerRecordTextFile;
public InvitationService(
ITranformToCustomerDistanceRecord customerRecordFileReader,
ISaveInviteeRecord customerRecordFileOutputWriter,
ICustomerDistanceFromDublinOffice distanceFromDublinOffice,
ISaveCustomerRecord saveCustomerRecordTextFile)
{
_customerRecordFileReader = customerRecordFileReader ?? throw new ArgumentNullException(nameof(customerRecordFileReader));
_customerRecordFileOutputWriter = customerRecordFileOutputWriter ?? throw new ArgumentNullException(nameof(customerRecordFileOutputWriter));
_distanceFromDublinOffice = distanceFromDublinOffice ?? throw new ArgumentNullException(nameof(distanceFromDublinOffice));
_saveCustomerRecordTextFile = saveCustomerRecordTextFile ?? throw new ArgumentNullException(nameof(saveCustomerRecordTextFile));
}
public async Task<InviteeResponse> InviteToDublinOfficeAsync(IFormFile file)
{
var filepath = await _saveCustomerRecordTextFile.WriteToDiskCustomerRecordAsync(file);
var customerRecords = _customerRecordFileReader.MappingFromTextFileToCustomerRecord(filepath);
var customerRecordsWithDistance = _distanceFromDublinOffice.TransformCustomerRecordToInviteeDistanceRecord(customerRecords);
return _customerRecordFileOutputWriter.WriteToDiskInviteeToOffice(customerRecordsWithDistance);
}
}
解决方案
.Returns(Task.FromResult(It.IsAny<string>()));
您不应该在返回语句
Moq 中使用 It 类 - 在设置的返回中使用 It.IsAny 时会发生什么?
将其替换为您想要的任何值,例如 String.Empty 或 smthn
推荐阅读
- gcc - 如何告诉 GCC 将库链接到 exe?
- vue.js - 如何使用 @vue/test-utils 设置属性并让它们显示在 HTML 中?
- javascript - React - 未捕获的错误:元素类型无效
- spring-security - SAML 请求中缺少 X509 证书和签名 - 从 SP(Sp 发起的 SSO)生成 - Spring Boot、SAML、ADFS
- c++ - 如何从 Assimp 获取导入的 Mesh 的位置
- javascript - Formik - 单独验证数组的每个索引并为此引发错误
- flutter - 如何在单元测试中模拟在颤动中按住(按住)键盘键?
- sql - 如何从表而不是视图中选择
- javascript - 在 `contextmenu` 事件之后接收指针事件
- npm - 如何将注册表从 package-lock.json 替换为新的?