如何根据参数值对一个调用不同私有函数的方法进行单元测试?

时间:2013-11-18 05:31:02

标签: unit-testing

    [HttpPost]
    public ActionResult Save(Master model, FormCollection form)
    {
        if (form != null)
        {
            if (int.Parse(form["btnFlag"]) == 2)
            {
                Process(model);
            }
            else if (int.Parse(form["btnFlag"]) == 3)
            {
                Reject(model);
            }
        }
        return RedirectToAction("Index");

    }

这是我正在测试的方法。我想知道是调用Process()方法还是调用Reject()?

1 个答案:

答案 0 :(得分:0)

现在,逻辑对于类来说太内部了,无法完全测试它。我建议另一种方法,你可以改为定义另一个类来包含逻辑并在其上放置Process / Reject方法。

新类应该实现一个接口,你可以将它设置为控制器上的属性/构造函数参数。然后,您可以使用像MOQ这样的模拟框架来模拟方法并验证它们是否被调用。 这是MOQ https://code.google.com/p/moq/wiki/QuickStart

的入门读物

另一种方法是使用受保护的虚拟方法并在测试中覆盖它们以检查方法是否至少被调用。 这将是以下http://www.unit-testing.net/CurrentArticle/How-To-Remove-Data-Dependencies-In-Unit-Tests.html

的变体