1

通常、ここですべての質問への回答を探しているわけではありませんが、学習リソースへのリンクや、私のポイントのいくつかについてのアドバイスを探しています。

私のプロジェクトで単体テストを実装しようとしていますが、十分に詳細なチュートリアル (理想的にはビデオ チュートリアル) が見つかりません。

A- 1.機能を個別に単体テストするのに十分な懸念事項を分離するにはどうすればよいですか?

A- 2. テストでは何に重点を置き、どこに線を引くべきですか?

A- 3. 個々の単体テストは何をカバーする必要があり、どの時点で 2 つの単体テストに分割する必要がありますか?

だから私はCode Firstを使用しています。製品モデル、コントローラー、ビューを構築しました:

    //
    // GET: /Product/Edit/5

    public ActionResult Edit(int id = 0)
    {
        Product product = db.Products.Find(id);
        if (product == null)
        {
            return HttpNotFound();
        }
        return View(product);
    }

    //
    // POST: /Product/Edit/5

    [HttpPost]
    public ActionResult Edit(Product product)
    {
        if (ModelState.IsValid)
        {
            db.Entry(product).State = EntityState.Modified;
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        return View(product);
    }

    [TestMethod]
    public void TestEditView() {
        // Arrange
        ProductController controller = new ProductController();

        // Act
        ViewResult result = controller.Edit(2) as ViewResult;

        // Assert
        //make sure theres a result
        Assert.IsNotNull(result);
        //make sure it's the right results
        Assert.AreEqual("Edit", result.ViewName);
        //test a dropdownlist exists
        Assert.IsNotNull(result.ViewBag.CategoryID);
    }

B- 1. POST メソッドをどのようにテストすればよいですか? 単体テストを作成して個別にテストできるように、データ管理用のレイヤーを追加する必要がありますか?

B- 2. ビューが返されるか、データを確認することにもっと集中する必要があります (たとえば、Edit.cshtml がある場合は常に返されます (なぜそれをテストするのですか?)、返されるデータの方が重要です)。そうですか? それとも、ブラック ボックスの方が重要ですか? または 3 つすべてをカバーする必要がありますか?)

B- 3. ビューとデータを別々にテストするために、単体テストを分解する必要がありますか?

繰り返しになりますが、多くの質問がありますが、主に、例、チュートリアル、およびユニット テスト (および MVC) の使用方法についてできる限り学習する方法を探していると思います。

4

2 に答える 2

2

Pro ASP.NET MVC 4 という本が優れたリソースであることがわかりました。EF を使用した MVC プロジェクトのコンテキストで単体テストをうまくカバーしています。

于 2013-03-03T14:40:31.680 に答える
1

「Unity、ユニットテストによる依存性注入」を提案します

詳細については、以下のリンクをご覧ください。

Link1

Link2

于 2013-03-03T16:23:48.570 に答える