Как правильно проверить результат в Unit-тесте?
Помогите разобраться, у меня есть следующий контроллер:
[HttpGet]
public async Task<ActionResult> Auction([FromQuery] int[] ids, [FromQuery] string platfrom, AuctionModel auctionModel)
{
var partners = _adcampaign.GetRtbPartners(ids);
var result = await _rtbservice.GetAuctionResult(partners.Values, auctionModel);
if (result?.Length > 0)
{
return new ContentResult
{
Content = result,
ContentType = "application/xml",
StatusCode = 200
};
}
else return NoContent();
}
и есть Unit-тест
[Fact]
public async Task ReturnNoContentResult()
{
int[] ids = // Заполение
IReadOnlyDictionary<int, RtbModel> partners = // Заполение
List<RtbModel> rtb_partners = // Заполнение
var auctionModel = // Заполнение
// Arrange
var mock1 = new Mock<IRtbService>();
mock1
.Setup(a => a.GetAuctionResult(rtb_partners, auctionModel))
.ReturnsAsync("");
var mock2 = new Mock<ICachingResults>();
mock2
.Setup(a => a.GetRtbPartners(ids))
.Returns(partners);
var controller = new RtbController(mock1.Object, mock2.Object);
// Act
var result = await controller.Auction(ids, "1111-1-1", auctionModel);
// Assert
var contentResult = Assert.IsType<ContentResult>(result);
Assert.Equal();
}
Как правильно выполнить Assert.Equal(), даже точнее что ему передать в качестве параметов, чтобы проверить два return из контроллера?
Ответы (1 шт):
Автор решения: Nikita
→ Ссылка
На каждый return надо написать отдельный unit-тест, чтобы проверить что контроллер возращает положительный ответ, надо сделать что-то вроде этого
//Act
var result = await controller.Auction(ids, "1111-1-1", auctionModel);
//Assert
var contentResult = Assert.IsType<ContentResult>(result);
затем сравниваем результат через Assert
Чтобы проверить что контроллер возращает отрицательный ответ, надо сделать что-то вроде этого
// Act
var result = await controller.Auction(ids, "1111-1-1", auctionModel);
// Assert
var contentResult = Assert.IsType<NoContentResult>(result);
и затем снова сравниваем результат через Assert