首页 > 解决方案 > 为什么 PartialViewResult 的 Razor 页面处理程序返回类型的单元测试失败?

问题描述

我正在使用 Core 3.1 Xunit 在应用程序中测试 Razor 页面,并使用 Moq 来模拟任何服务。在处理程序上运行测试PageModel以测试它是否返回PartialViewResult类型时,我得到以下异常:

System.NullReferenceException : Object reference not set to an instance of an object.

PageModel处理程序看起来像这样,作为Application属性 on PageModel

public PartialViewResult OnGetApplicationAddedModalPartial()
{
    return Partial("_ApplicationAddedModalPartial", Application);
}

这是它的失败测试:

[Fact]
public void OnGetApplicationAddedModalPartial_WhenCalled_ShouldReturPartialViewResultType()
{
    //Arrange
    _sut.Application = It.IsAny<ApplicationModel>();

    //Act
    var result = _sut.OnGetApplicationAddedModalPartial();

    //Assert
    Assert.IsType<PartialViewResult>(result);
}

奇怪的是我有另一个处理程序PageModel,我成功地测试了返回是否是JasonResult类型。此外,我在此应用程序中有控制器,其中一些操作还返回PartialViewResult我成功测试的类型。

PartialViewResulta上的返回类型处理程序有什么特别之处PageModel,如何创建测试以确保它返回PartialViewResult

标签: c#asp.net-mvcasp.net-corerazor-pagesxunit

解决方案


推荐阅读