C# 在XUnit中,如何对收到的IActionResult进行解析

C# 在XUnit中,如何对收到的IActionResult进行解析,c#,unit-testing,asp.net-core,xunit,C#,Unit Testing,Asp.net Core,Xunit,如何解析在XUnit测试中收到的IActionResult 我尝试了下面的方法,但在行中出现错误(返回null) 控制器类 public IActionResult Details(int id) { var pie = _pieRepository.GetPieById(id); if(pie==null) { return NotFound(); } else { return View(pie); }

如何解析在XUnit测试中收到的
IActionResult

我尝试了下面的方法,但在行中出现错误(返回null)

控制器类

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);
}

我已经参考了下面帖子中的代码,但仍然没有运气“

OkObjectResult
,通常由API控制器返回。在您的特定情况下,控制器返回
ViewResult
type

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);

可能存在的副本
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);