如何解决对Web API插入记录方法执行xUnit Moq测试
我有一个使用.NET CORE 2.2的应用程序。 Web API,并使用最小起订量和夹具创建了xUnit测试。
我的控制器方法采用supplierDtoObject,然后调用服务方法在其中创建供应商记录,并返回新创建记录的Guid ID。然后,控制器方法通过传递ID来获取supplier对象,从而在服务类中调用Getsupplier。 (新记录)
由于我的控制器方法返回了supplier Object,并且Id是在服务类级别生成的,所以不确定如何执行此行为吗?
控制器方法(SUT)
[HttpPost]
public async Task<ActionResult<supplier>> Postsupplier(supplierDto supplier)
{
var newlyCreatedsupplierId = await _supplierService.Insertsupplier(supplier);
if (newlyCreatedsupplierId != Guid.Empty)
{
var newlyCreatedsupplier = await _supplierService.Getsupplier(newlyCreatedsupplierId);
return newlyCreatedsupplier;
}
return null;
}
测试类
[Fact]
public async Task Postsupplier_WithValidsupplierData_Should_CreatesupplierInstance()
{
//Arrange
var fixture = new Fixture();
var supplierDtoMockData = fixture.Create<supplierDto>();
var supplierMoqData = GetSupplerDataModelObject(supplierDtoMockData);
mocksupplierService.Setup(m => m.Insertsupplier(supplierDtoMockData)).ReturnsAsync(supplierMoqData.Id);
//How to moq supplier based on based on supplierMoqData.Id???
//Act
var actualResultData = sut.Postsupplier(supplierDtoMockData);??
//Assert
??
}
解决方法
我设法解决了这个问题...
[Fact]
public async Task PostSupplier_WithSupplierData_Should_CreateSupplierInstance()
{
//Arrange
var fixture = new Fixture();
var supplierDtoMockData = fixture.Create<SupplierDto>();
var supplierMockData = GetSupplerDataModelObject(supplierDtoMockData);
mockSupplierService.Setup(m => m.InsertSupplier(supplierDtoMockData)).ReturnsAsync(supplierMockData.Id);
mockSupplierService.Setup(m => m.GetSupplier(supplierMockData.Id)).ReturnsAsync(supplierMockData);
//Act
var actualDataResult = await sut.PostSupplier(supplierDtoMockData);
//Assert
Assert.Equal(supplierMockData,actualDataResult.Value);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。