单元使用MVP模式和Rhino Mock测试保存功能

时间:2011-06-08 08:32:22

标签: asp.net unit-testing rhino-mocks

我正在努力通过我的单元测试获得更好的代码覆盖率,最近我转而使用RhinoMock来满足我的模拟需求。

但是我有一个关于如何编写特定单元测试的问题,Save()函数。

我有一个带有几个函数的IView接口,用于从视图中检索值(aspx页面),例子是GetUsername(),GetPassword(),GetAddress()和GetCountry()。

当用户点击提交按钮时,我想要测试是否测试是否实际调用了所有这些功能。所以我写了这个测试:

    [TestMethod]
    public void MainController_Save_ShouldRetrieveLUsername()
    {
        //Initialize the IView and Controller
        InitViewAndController();

        //Trigger the Save function triggering the controller 
        //to collect information for storage
        _controller.Save();

        _view.AssertWasCalled(s => s.GetUsername(), o => o.Repeat.Once());
    }

现在终于出现了问题,考虑到aspx包含需要保存的15个输入字段,是否有更好的方法来测试这种写入和维护这些测试的15个行为? 一方面,测试应该是简单的,最优的只有一个断言,但这些功能中的15个感觉就像浪费一样。

1 个答案:

答案 0 :(得分:1)

不是测试是否调用这些函数(它们看起来更像属性而不是函数,BTW),而应检查Save函数的结果。您应该将测试代码更像是一个黑盒子,并尽量不要将太多的内部知识插入到测试中。这样,当Save代码发生变化时,您的测试就会变得不那么脆弱。

谷歌“基于州的测试”。