0

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

2 に答える 2

0

これは IEnumerable であるため、配列にしたい場合は「ToArray」メソッドを使用できます。

Game[] theModel = viewResult.ToArray();

しかし、それ.Countはうまくいくはずですか?

repo.GetGames()「 」の署名が見えますか

于 2013-05-14T17:39:22.377 に答える