Asp.net core mvc ViewComponent的XUnit测试是否返回空结果?

Asp.net core mvc ViewComponent的XUnit测试是否返回空结果?,asp.net-core-mvc,xunit.net,asp.net-core-viewcomponent,Asp.net Core Mvc,Xunit.net,Asp.net Core Viewcomponent,我正在尝试使用XUnit测试我的ViewComponent。 当我调试组件并在它返回组件视图之前设置断点时,模型就被设置好了 这是我返回的简单模型 public class IntDashMakeRecAssgnmntsPoRespMngrVM { public IEnumerable<Audit> Audits { get; set; } } 现在是我的单元测试: [Fact] public void ReturnsAudit_1Finding_1Rec

我正在尝试使用XUnit测试我的ViewComponent。 当我调试组件并在它返回组件视图之前设置断点时,模型就被设置好了

这是我返回的简单模型

public class IntDashMakeRecAssgnmntsPoRespMngrVM
{
    public IEnumerable<Audit> Audits { get; set; }
}

现在是我的单元测试:

    [Fact]
    public void ReturnsAudit_1Finding_1Rec_1Asgn_PONeeded_RespMnrAssigned()
    {
        // Arrange
        var audits = new Audit[]
        {
            new Audit { AuditID = 1 }
        };

        var findings = new Finding[]
        {
            new Finding{ Audit = audits[0], FindingId = 1 }    // 1 Finding
        };

        var recommendations = new List<Recommendation>()
        {
            new Recommendation  // 1 Rec
            {
                Finding = findings[0],
                Assignments = new List<Assignment>()
                {
                    // PO Authorizor
                    new Assignment { AssignmentRoleId = 15 }
                    // No Responsible Manager
                }
            }
        };

        audits[0].Findings = findings;
        findings[0].Recommendations = recommendations;

        Mock<IAuditRepository> mockAuditRepo = new Mock<IAuditRepository>();
        mockAuditRepo.Setup(m => m.Audits).Returns(audits.AsQueryable());
        Mock<IExternalRepository> mockExternalRepo = new Mock<IExternalRepository>();
        mockExternalRepo.Setup(m => m.ExternalRecords).Returns(
            new External[0].AsQueryable() 
        );

        // Act
        var component = new IntDashMakeRecAssgnmntsPoRespMngrViewComponent(
            mockAuditRepo.Object, mockExternalRepo.Object);
        component.ViewComponentContext = new ViewComponentContext();
        component.ViewComponentContext.ViewContext.HttpContext = TestContext;

        var result =
            component.Invoke() as IntDashMakeRecAssgnmntsPoRespMngrVM;
        int auditCount = (result).Audits.Count();

        // Assert
        Assert.Equal(1, auditCount);
    }
我也尝试过这个,但它仍然是空的:

ViewComponentResult result =
            component.Invoke() as ViewComponentResult;
        int auditCount =
            ((IntDashMakeRecAssgnmntsPoRespMngrVM)result.Model).Audits.Count();
我想出来了。 我没有把结果选对类型

我有这个:

ViewComponentResult result =
        component.Invoke() as ViewComponentResult;
    int auditCount =
        ((IntDashMakeRecAssgnmntsPoRespMngrVM)result.Model).Audits.Count();
应该是这样的:

var result =
            component.Invoke() as ViewViewComponentResult;
        int auditCount =
            ((IntDashMakeRecAssgnmntsPoRespMngrVM)result.ViewData.Model).Audits.Count();
ViewComponentResult而不是ViewComponentResult

ViewComponentResult result =
            component.Invoke() as ViewComponentResult;
        int auditCount =
            ((IntDashMakeRecAssgnmntsPoRespMngrVM)result.Model).Audits.Count();
ViewComponentResult result =
        component.Invoke() as ViewComponentResult;
    int auditCount =
        ((IntDashMakeRecAssgnmntsPoRespMngrVM)result.Model).Audits.Count();
var result =
            component.Invoke() as ViewViewComponentResult;
        int auditCount =
            ((IntDashMakeRecAssgnmntsPoRespMngrVM)result.ViewData.Model).Audits.Count();