Как я могу протестировать в 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);
}
Я не знаю, как проверить объект с несколькими свойствами.
Может быть, мне нужно использовать Moq? Теоретически, этот метод будет идти в DAL (Уровень DatabaseAccess) и возвращаться из упакованного объекта базы данных и возвращаться к API, или в моем случае обратно в тест.