如何为单元测试中的类中的对象添加硬编码值以进行测试

时间:2017-02-20 09:17:03

标签: c# asp.net unit-testing static-methods

[HttpGet]
public IHttpActionResult GetTerm()
{
    Response resp = new Response(); 
    resp = InfomationController.GetTermAndCond(); //line 'LI001'
    return Ok(resp);
} 
[TestMethod]
public void GetTerm_FromGetTerm()
{
    var controller = new ServController();
    IHttpActionResult actionResult = controller.GetTerm();

    Assert.IsNotNull(actionResult);
}

在上面这里,Response类充当一个模板,根据GetTermAndCond();(静态方法)添加的值添加另一个字段(按摩)。

  1. 我想知道如何才能正确地为此编写单元测试 有一种静态的方法。
  2. 有什么方法可以为 line' LI001' 添加一个值 测试方法,并检查是否相应地给出了必要的响应。
  3. P.S.-无论如何都无法改变源代码。我知道这可能是一个重复的视角,但我在堆栈中浏览了很多次,并没有找到解决方案。如果有人能找到答案,那将是一个很大的帮助。

1 个答案:

答案 0 :(得分:1)

为包含InformationController的程序集生成Fakes程序集。然后你可以重新编写单元测试方法:

[TestMethod]
public void GetTerm_FromGetTerm()
{
    var controller = new ServController();

    using (ShimsContext.Create())
    {
        MyAssembly.Fakes.ShimInteractionController.GetTermsAndConds = () => SomeCannedResponse();

        IHttpActionResult actionResult = controller.GetTerm();
        var result = controller.GetTerm(); // Why do you call GetTerm twice?!
        Assert.IsNotNull(actionResult);
    }
}