В XUnit как сделать разбор на IActionResult вы получите - PullRequest
0 голосов
/ 02 октября 2018

Как мне проанализировать IActionResult, полученное в моем тесте XUnit.

Я попробовал следующее и получил ошибку в строке (возвращая null )

var okObjectResult = actionResult as OkObjectResult;

Класс контроллера

public IActionResult Details(int id)
{
    var pie = _pieRepository.GetPieById(id);

    if(pie==null)
    {
        return NotFound();
    }
    else
    {
        return View(pie);
    }          
}

Контрольный пример XUnit

[Fact]
public async void DetailsTest()
{
    MockPieRepository _data = new MockPieRepository();
    int _id = 1;
    string desc = "Selenium Pie";
    var homecontroller = new HomeController(_data);

    IActionResult actionResult = homecontroller.Details(_id);
    var okObjectResult = actionResult as OkObjectResult;

    Assert.NotNull(okObjectResult);

    var model = okObjectResult.Value as Pie;

    Assert.NotNull(model);         
    Assert.Equal(1, model.Id);
    Assert.Equal(desc, model.ShortDescription);
}

Я сослался на код из приведенного ниже поста и до сих пор не повезло " Как получить значение контента вXunit, когда результат возвращается в типе IActionResult"

1 Ответ

0 голосов
/ 02 октября 2018

OkObjectResult обычно возвращается контроллерами API.В вашем конкретном случае контроллер возвращает тип ViewResult.

var actionResult = homecontroller.Details(_id);
var viewResult = actionResult as ViewResult;
var actualPie = viewResult.ViewData.Model as Pie;

Assert.NotNull(model);         
Assert.Equal(1, model.Id);
Assert.Equal(desc, model.ShortDescription);

Проверка логики контроллера в ASP.NET Core

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...