0

私は MVC アプリケーションを開発しており、その中で単体テストを作成しようとしています。

以下に示すように、単体テストを作成しました。

   [TestMethod]
        public void Company_Details2()
        {
            Company oCompany = new Company();
            var result = oCompanyController.Details(97) as ViewResult;
            var Comp = (Company)result.ViewData.Model;
            Assert.AreEqual("TName", Comp.Name);

        }

コントローラーは次のとおりです。

[SessionFilterAction]
public ViewResult Details(int id)
{
    Company company = db.Companies.Find(id);
    return View(company);
}

単体テストを実行しようとすると、最後の行のテスト メソッドでエラーが返されます。

オブジェクト参照がオブジェクト インスタンスに設定されていません。

単体テストは初めてなので、index、Create、Edit、Details、および Delete メソッドのテスト メソッドの書き方がわかりません。どこで見つけることができますか?

4

2 に答える 2

0

他の人が示したように、インターフェイスにコーディングすることは良い習慣です。Moq は、必要な関数への偽の呼び出しを行うのに役立つフレームワークであり、習得が非常に簡単です。今、私はあなたが電話していると仮定します, IRepository.Detials(), だから今,

[TestMethod]
SomeMethod()
{
 // This will create a fake/mock for your interface so that you can still call func. 
 // but not actual one.
  Mock<IRepository> mockedRepository= new Mock<IRepository>();

 // Here, we are making fake call but still Returns will give us the output.
  mockedRepository.SetUp(x=>x.Details()).Returns(Company Object);
  var result=controller.Action() as ViewResult;
  // Assert
}

と主張する人もいるかもしれませんが、私は Details メソッドをテストしませんでした。そのため、別の単体テストなどを作成します。

于 2013-08-15T12:02:43.283 に答える