-2

私は Steve Sanderson の本 Pro ASP.NET MVC Framework に取り組んでおり、1 つの単体テストでエラーが発生する問題が発生しています。

以下の例では、Paginate をテストします。

 [TestMethod]
 public void Can_Paginate()
 {

        Mock<IProductRepository> mock = new Mock<IProductRepository>();

        mock.Setup(m => m.Products).Returns(new Product[] {
        new Product{ProductID=1,Name="P1"},
        new Product{ProductID=2,Name="P2"},
        new Product{ProductID=3,Name="P3"},
        new Product{ProductID=4,Name="P4"},
        new Product{ProductID=5,Name="P5"}
        }.AsQueryable());

        ProductController controller = new ProductController(mock.Object);    
        controller.PageSize = 3;

        IEnumerable<Product> result = (IEnumerable<Product>)controller.List(2).Model;

        Product[] prodArray = result.ToArray();
        Assert.IsTrue(prodArray.Length == 2);
        Assert.AreEqual(prodArray[0].Name, "P4");
        Assert.AreEqual(prodArray[0].Name, "P5");
}

メッセージエラーは次のとおりです。

テスト メソッド UnitTestProject3.Peginate.Can_Peginate が例外をスローしました: System.NullReferenceException.

誰かが同様の問題に遭遇したり、テストに合格したりしましたか?

4

1 に答える 1

1

いくつかのタイプミスがあり、これらの行を更新する必要があります。

ProductListViewModel result = (ProductsListViewModel)controller.List(null, 2).Model;

Assert.AreEqual(prodArray[1].Name, "P5");

ProductsController では、チュートリアルで ViewResult を次のように更新しました。

public ViewResult List(string category, int page = 1)

この本には、次のように記載されています。コントローラー。」- ページ。203

于 2013-10-10T15:01:20.123 に答える