我在 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/