需要使用NUnit测试控制器HTTP方法

时间:2017-11-06 11:34:05

标签: c# unit-testing nunit

我用简单的HTTP方法在C#中编写了一个后端。获取,发布(创建),放置(更新),删除。

现在我想用NUnit实现一些单元测试。我发现this article描述了NUnit的基础知识。但现在问题是,我如何使用它来创建单元测试?

有人可以解释一下我要测试控制器HTTP方法吗?

提前致谢:)

修改

为了清楚起见,我想测试是否可以在我的控制器类上获取,创建,更新,删除项目。

2 个答案:

答案 0 :(得分:1)

假设您使用的是ASP.NET MVC,您可以执行以下操作:

 public class ProductController : Controller
 {
      public ActionResult Index()
      {
           // Add action logic here
           throw new NotImplementedException();
      }

      public ActionResult Details(int Id)
      {

           return View("Details");
      }
 }


 [TestFixture]
 public class ProductControllerTest
 {
      [Test]
      public void TestDetailsView()
      {
           var controller = new ProductController();
           var result = controller.Details(2) as ViewResult;
           Assert.AreEqual("Details", result.ViewName);

      }
 }

取自https://docs.microsoft.com/en-us/aspnet/mvc/overview/older-versions-1/unit-testing/creating-unit-tests-for-asp-net-mvc-applications-cs

的示例

答案 1 :(得分:1)

就个人而言,我倾向于避免在控制器本身中放置太多逻辑,因为它们并不那么简单(如你所见)。

相反,添加一个服务层,它可以执行任何所需的业务逻辑并测试它。这样,逻辑也可以在非MVC情况下重用。

这样,您的控制器操作可以简化为:

//Controller action
IHttpResult DoSomething(string input)
{
    var model = SomeService.DoThings(input);
    return View("~/views/DoSomethingView.cshtml", model);
}

哪个太轻了,你可以设法在晚上睡觉而不需要进行单元测试,但SomeService可以很容易地进行单元测试。