使用存根提供预设响应
存根是轻量级测试双重,在调用方法时提供固定响应。在被测试的类依赖于接口或基类的情况下,可以实现替代的存根类以用于符合接口的测试。
所以,假设以下界面,
public interface IRecordProvider {
IEnumerable<Record> GetRecords();
}
如果要测试以下方法
public bool ProcessRecord(IRecordProvider provider)
可以编写实现接口的存根类,以将已知数据返回到正在测试的方法。
public class RecordProviderStub : IRecordProvider
{
public IEnumerable<Record> GetRecords()
{
return new List<Record> {
new Record { Id = 1, Flag=false, Value="First" },
new Record { Id = 2, Flag=true, Value="Second" },
new Record { Id = 3, Flag=false, Value="Third" }
};
}
}
然后可以将此存根实现提供给被测系统,以影响其行为。
var stub = new RecordProviderStub();
var processed = sut.ProcessRecord(stub);