c# - 将模型转换为 MVC 测试中的列表

标签 c# asp.net-mvc testing visual-studio-2012 casting

我在 VS2012 中使用 NSubstitute 运行测试,我正在尝试将模型转换为列表,或者我可以计算的东西。这是代码:

    [TestMethod]
    public void StartedGame()
    {
        // arrange
        var repo = Substitute.For<IGameRepository>();
        IEnumerable<Game> expectedGames = new List<Game> 
            {
                new Game{ gameTypeID = 1, hasStarted = false, ID = 1, isOver = false, isPublic = true, maxPlayers = 2, someoneReported = false},
                new Game{ gameTypeID = 1, hasStarted = false, ID = 2, isOver = false, isPublic = true, maxPlayers = 2, someoneReported = false},
                new Game{ gameTypeID = 2, hasStarted = false, ID = 3, isOver = false, isPublic = true, maxPlayers = 2, someoneReported = false},
                new Game{ gameTypeID = 2, hasStarted = false, ID = 4, isOver = false, isPublic = true, maxPlayers = 2, someoneReported = false},
                new Game{ gameTypeID = 1, hasStarted = false, ID = 5, isOver = false, isPublic = true, maxPlayers = 2, someoneReported = false}
            };
        repo.GetGames().Returns(expectedGames);
        var sut = new GameController(repo);

        // act
        var actual = sut.GameMenuStart();
        // assert
        //Assert.IsInstanceOfType(actual, typeof(ViewResult));
        var viewResult = actual as ViewResult;

        Assert.IsNotNull(viewResult);
    }

当我调试时,我可以将鼠标悬停在“viewResult”上并查看模型,然后我可以看到条目和“计数”,但我如何才能到达它?我试过像这样转换到“游戏”对象:

Game[] theModel = (Game[])viewResult.Model;

并列出更多,但总是失败。 有什么想法吗?

编辑:viewResult 的类型为:System.Web.Mvc.ViewResult

下面是这个函数中的其余代码:

        var repo = Substitute.For<IGameRepository>();
        IEnumerable<Game> expectedGames = new List<Game> 
            {
                new Game{ gameTypeID = 1, hasStarted = false, ID = 1, isOver = false, isPublic = true, maxPlayers = 2, someoneReported = false},
                new Game{ gameTypeID = 1, hasStarted = false, ID = 2, isOver = false, isPublic = true, maxPlayers = 2, someoneReported = false},
                new Game{ gameTypeID = 2, hasStarted = false, ID = 3, isOver = false, isPublic = true, maxPlayers = 2, someoneReported = false},
                new Game{ gameTypeID = 2, hasStarted = false, ID = 4, isOver = false, isPublic = true, maxPlayers = 2, someoneReported = false},
                new Game{ gameTypeID = 1, hasStarted = false, ID = 5, isOver = false, isPublic = true, maxPlayers = 2, someoneReported = false}
            };
        repo.GetGames().Returns(expectedGames);
        var sut = new GameController(repo);

最佳答案

var theList = viewResult.Model as IEnumerable<Game>;

这成功了。

关于c# - 将模型转换为 MVC 测试中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16549351/

相关文章:

asp.net-mvc - 我如何在 mvc actionlink 语法中添加 Bootstrap 图像?

asp.net-mvc - `BundleTable.EnableOptimizations = true` 时是否使用版本文件的 .min ?

c# - 运行 selenium 单元测试时 Firefox 崩溃

c# - 使用运行时类型执行的通用方法

c# - 找不到默认端点...但它就在那里?

java - 如何销毁静态对象? - 测试静态字段时出现问题

java - 基于 SOAP 的 Web 服务的集成测试

c# - 如何在 LINQ 中使用 GroupBy 查找丢失的项目?

c# - 当第一个失败时是否可以停止检查进一步的验证?

java - Swagger api 客户端方法返回 void