【问题标题】:ASP.NET MVC4 Code First and Unit Testing Tutorials/AdviceASP.NET MVC4 代码优先和单元测试教程/建议
【发布时间】:2013-03-03 14:02:22
【问题描述】:

我通常不会在这里寻找每个问题的答案,而是更多指向学习资源的链接,也许还有关于我的一些观点的建议

我正在尝试在我的一个项目中实施单元测试,但我找不到任何足够详细的教程(最好是视频教程)。

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

【问题讨论】:

    标签: entity-framework asp.net-mvc-4 ef-code-first


    【解决方案1】:

    我发现这本书 Pro ASP.NET MVC 4 是一个很好的资源。它很好地覆盖了使用 EF 的 MVC 项目上下文中的单元测试。

    【讨论】:

      【解决方案2】:

      我建议“Unity,依赖注入和单元测试”

      更多详情,请访问以下链接

      Link1

      Link2

      【讨论】:

        猜你喜欢
        • 2016-10-27
        • 1970-01-01
        • 2011-03-28
        • 1970-01-01
        • 2020-06-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多