【发布时间】:2019-06-14 17:39:48
【问题描述】:
如何在 asp.net core 2.0 中进行测试,该方法存在于与我的测试项目不同的项目中?比如这样:
public partial class LoanRequestServiceController : BaseServiceController
{
public ServiceDTO<AP_CBO> AddCBO(AP_CBO cbo)
{
ServiceDTO<AP_CBO> dto = new ServiceDTO<AP_CBO>();
try
{
using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = IsolationLevel.Snapshot }))
{
cbo.ID_CBO = 333;
dto.Data = cbo;
scope.Complete();
}
}
catch (Exception ex)
{
dto.Error = new ServiceError(ex);
Globals.Logger.Error(ex);
}
finally
{
//Globals.CastleComponentsContainer.Release(LoanRequestDAL);
}
return dto;
}
}
我测试了一些“轻量级”方法,例如服务方法是否返回 SucessCode 并且可以正常工作。 这是我的测试类:
[Theory]
[InlineData("/Sample/AddCBO")]
public async Task Test_AddCBO(string url)
{
//Arrange
var client = _factory.CreateClient();
//Act
var response = await client.GetAsync(url);
//Assert
response.EnsureSuccessStatusCode();
//Compare two dto objects AP_CBO
//object expected = new AP_CBO { properties... }
// object responseObject = response.Content...
//Assert.Equal(expected, responseObject);
}
我不知道如何测试具有多个属性的对象。 也许我需要使用起订量?从理论上讲,这种方法会转到 DAL(数据库访问层)并从数据库打包对象返回并返回到 api,或者在我的情况下返回到测试。
【问题讨论】:
-
考虑使用FluentAssertions 库,该库提供了不错的(流利的)api,用于断言具有期望的实际数据。在你的情况下,它只是
responseObject.Should().BeEquivalentTo(expected)
标签: c# asp.net-core xunit