应用程序的单元测试

时间:2015-05-12 08:45:19

标签: c# asp.net-mvc asp.net-mvc-4 tdd

我在mvc中显示图表。

OR

如何编写测试用例来检查数据。我是MVC的新手

2 个答案:

答案 0 :(得分:2)

您将发现编写真正的单元测试很困难,因为您正在实例化MapContext的具体实例。理想情况下,你使用IoC / Dependancy Injection来注入你的MapContext,然后你真的想为它创​​建一个接口,这样它就可以伪造/嘲笑,否则你不只是测试控制器你#&# 39;重新测试MapContext然后它不再是一个单元测试,而是一个综合测试.....丢失了吗?!

控制器看起来像:

public class HomeController : Controller
{
    IMapContext _context;

    public HomeController(IMapContext mapContext)
    {
        _context = mapContext;            
    }

    public ActionResult Index()
    {
        var x = (from c in _context.Area
                     select c.Name).ToArray();

       var y = (from c in _context.Area
                     select c.Pin).ToArray();

        var bytes = new Chart(width:500, height: 300)
        .AddSeries(
         chartType: "Column",
         xValue: x,
         yValues: y)
        .GetBytes("png");
        return File(bytes, "image/png");
    }
}

然后你的单元测试就像(Nunit + Moq):

[TestFixture]
public class HomeControllerTest
{
    Mock<IMapContext> _mapContext;

    [SetUp]
    public void SetUp()
    {
        _mapContext = new Mock<IMapContext>();
    }

    [Test]
    public void BasicTest()
    {
        HttpConfiguration configuration = new HttpConfiguration();
        HttpRequestMessage request = new HttpRequestMessage();

        var homeController = new HomeController(_mapContext.Object);
        homeController.Request = request;

        var result = homeController.Index();

        Assert.IsNotNull(result);
        Assert.AreEqual(<somevalue>, result.SomeProperty);
     }
}

显然,您需要输入适当的值来测试并将SomeProperty更改为不动产。

进一步阅读将是了解更多关于

的信息
  • Ioc / Dependancy Inject
  • NUnit的
  • 起订量

修改

以下是一些可以帮助您入门的教程

double quotes

http://www.asp.net/mvc/overview/older-versions-1/unit-testing/creating-unit-tests-for-asp-net-mvc-applications-cs

https://msdn.microsoft.com/en-GB/library/dd410597(v=vs.100).aspx

答案 1 :(得分:0)