使用存根提供預設響應
存根是輕量級測試雙重,在呼叫方法時提供固定響應。在被測試的類依賴於介面或基類的情況下,可以實現替代的存根類以用於符合介面的測試。
所以,假設以下介面,
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);