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);