【问题标题】:ViewResult returns no dataViewResult 不返回任何数据
【发布时间】:2011-04-04 20:04:34
【问题描述】:

我正在使用来自 NerdDinner 的模式。我在我的测试方法中调用 Index() 并且我返回的 ViewREsult 没有数据。所以变量 data 最终为空。

但是,我知道那里有数据。因为我可以转到监视窗口并展开变量 result 并展开 viewData->Model->ResultsView 然后我看到“展开结果视图将枚举 IEnumerable”当我展开它时,数据存在。

知道为什么除非我展开,否则数据会返回 null 吗?

谢谢 贾斯

   [TestMethod]
    public void Index__Should_Return_1_or_More_lessons()
    {
        var controller = new LessonController(new FakeLessonRepository());

        var result = controller.Index() as ViewResult;

        var data = result.ViewData.Model as IList<Lesson>;
        Assert.IsTrue(data.Count > 0);
    }

【问题讨论】:

    标签: unit-testing asp.net-mvc-2 nerddinner viewresult


    【解决方案1】:

    这是因为 Linq 或 EF 中的 Lazy Loading(取决于您使用的内容)查询仅在需要时执行。您可以通过调用诸如 ToList() 或 ToArray() 之类的终结器或类似的东西来强制执行它。

    【讨论】:

    • 嗯不知道如何在 ViewResult 上使用 ToArray 或 ToList 方法...有什么想法吗?
    • var data = ((IList&lt;Lesson&gt;)result.ViewData.Model).ToList(); 应该可以正常工作
    • 谢谢! var data = ((EnumerableQuery)re​​sult.ViewData.Model).ToList();成功了。
    猜你喜欢
    • 2017-11-23
    • 2021-12-13
    • 2016-12-06
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多