如何在C#MVC中对公共无效方法进行单元测试

时间:2019-05-14 07:09:31

标签: asp.net-mvc unit-testing

我有一个公共无效方法SaveCover2AData()。如何为这种方法创建单元测试?

这是我的公共方法,我在此方法中传递了一个模型对象作为参数。

现在,我想为此方法创建单元测试:

public void SaveCover2AData(CASTabCover2a t2a)
{
    CASCreateViewModel obj = (CASCreateViewModel)Session["CASQuote"];

    t2a.Quote_Exposures = t2a.Quote_Exposures.Where(x => x.Exposure != null || x.ExposurePL != null).ToList();
    t2a.Quote_Jurisdictions = t2a.Quote_Jurisdictions.Where(x => x.Jurisdiction_Name != null || x.Country_NamePL != null).ToList();
    t2a.Quote_LimtOfIndemnitys = t2a.Quote_LimtOfIndemnitys.Where(x => x.Indemnity != null || x.IndemnityPL != null || x.LimitOfIndemnity_Currency != null).ToList();
    t2a.Quote_SubLimitOfIndemnitys = t2a.Quote_SubLimitOfIndemnitys.Where(x => x.Indemnity != null || x.IndemnityPL != null || x.SubLimitOfIndemnity_Currency != null).ToList();
    obj.TabCover2a = t2a;

    Session.Add("CASQuote", obj);
    ViewBag.Quote_Status_ID = JsonConvert.SerializeObject(obj.Quote_Status_ID);
}

到目前为止,我尝试过的测试方法是:

[TestMethod]
public void CASSaveCover2AData()
{
    builder.InitializeController(controller);
    var CASTabCover2a = new CASTabCover2a();
    controller.SaveCover2AData(CASTabCover2a);
    Assert.IsTrue(true);
}

当我调试此测试用例时,出现此错误:

  

发生类型为'System.NullReferenceException'的异常

1 个答案:

答案 0 :(得分:0)

首先,您的变量名在此处无效

 var CASTabCover2a = new CASTabCover2a();

第二个void方法会影响数据库,插入数据或删除数据。此时,在运行之前,您的void方法将获取相关表中的总行数。如果行数更改,则您的方法可以正常工作。

如果插入数据,则必须增加行的总数。反之亦然。

public void MyTestMethod()
{
    var total = db.Cars.Count(); 
    var car = new Car(); 
    db.Save(car);
    var total2 = db.Cars.Count();
    Assert.True(total2 > total);
}