我用简单的HTTP方法在C#中编写了一个后端。获取,发布(创建),放置(更新),删除。
现在我想用NUnit实现一些单元测试。我发现this article描述了NUnit的基础知识。但现在问题是,我如何使用它来创建单元测试?
有人可以解释一下我要测试控制器HTTP方法吗?
提前致谢:)
修改
为了清楚起见,我想测试是否可以在我的控制器类上获取,创建,更新,删除项目。
答案 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);
}
}
的示例
答案 1 :(得分:1)
就个人而言,我倾向于避免在控制器本身中放置太多逻辑,因为它们并不那么简单(如你所见)。
相反,添加一个服务层,它可以执行任何所需的业务逻辑并测试它。这样,逻辑也可以在非MVC情况下重用。
这样,您的控制器操作可以简化为:
//Controller action
IHttpResult DoSomething(string input)
{
var model = SomeService.DoThings(input);
return View("~/views/DoSomethingView.cshtml", model);
}
哪个太轻了,你可以设法在晚上睡觉而不需要进行单元测试,但SomeService
可以很容易地进行单元测试。