小编Mar*_*tin的帖子

TDD Mocking - 指定模拟对象行为白盒测试?

我最近刚开始使用TDD,在阅读了Kent Beck关于测试驱动开发的书之后,我脑子里仍然有很多关于测试设计的问题.

我目前遇到的一个问题是使用Mock对象.下面是一个非常简单的生成报告:

public string MakeFinancialReport()
{
    return sys1.GetData() + sys2.GetData() + sys3.GetData();
}
Run Code Online (Sandbox Code Playgroud)

报告必须包含标题,正文和页脚.因此,快速测试报告中是否存在这些标题:

public void TestReport()
{
    string report = MakeFinancialReport();
    Assert.IsTrue(report.Contains("[Title]") && report.Contains("[Body]") && report.Contains("[Footer]"));
 }
Run Code Online (Sandbox Code Playgroud)

为了隔离方法,我想我会嘲笑sys1,sys2和sys3调用.现在,如果他们都是嘲笑,我还有什么可以测试的?此外,当我模仿它们时,为什么我必须告诉模拟对象它们将被调用一次并返回X等.如果它不仅仅是一个黑盒测试而且MakeFinancialReport可以调用尽可能多的调用它想建立报告?

我对这个小问题感到困惑,我不确定我错过了什么.我认为Mocking可以删除可测试的代码,对于大多数简单的方法,剩下要测试的内容根本没用.

tdd mocking

9
推荐指数
1
解决办法
1175
查看次数

标签 统计

mocking ×1

tdd ×1