我有一個返回業務對象列表的Fitnesse RowFixture。該對象具有一個表示0到1之間的百分比的浮動字段。業務對象的消費者將是來自設計者的網頁或報表,因此百分比的格式將由設計者決定而不是業務對象。在Fitnesse RowFixture中格式化數據
如果頁面可以在將數字轉換爲百分比時仿效設計者,而不是顯示0.5,則它應該顯示50%。但我寧願不用顯示代碼污染業務對象。有沒有辦法在RowFixture中指定格式字符串?
我有一個返回業務對象列表的Fitnesse RowFixture。該對象具有一個表示0到1之間的百分比的浮動字段。業務對象的消費者將是來自設計者的網頁或報表,因此百分比的格式將由設計者決定而不是業務對象。在Fitnesse RowFixture中格式化數據
如果頁面可以在將數字轉換爲百分比時仿效設計者,而不是顯示0.5,則它應該顯示50%。但我寧願不用顯示代碼污染業務對象。有沒有辦法在RowFixture中指定格式字符串?
您當然不想修改您的業務邏輯,只是爲了讓您的測試看起來更好。好消息是,有一種方法可以做到這一點並不困難,但不像傳入格式說明符那麼簡單。
嘗試將Fit Fixture視爲FitNesse和您的應用程序代碼之間的服務邊界。要定義一個合同,這並不一定需要改變,如果你的SUT(小號 ystem ü的nDer 牛逼 EST)變更的實施細節。
讓我們看看你的業務對象的一個簡化版本:
public class BusinessObject
{
public float Percent { get; private set; }
}
監守的方式,一個RowFixture工作,我們需要定義一個簡單的對象,將作爲合同。通常我們會用一個接口,但不會爲我所用這裏這麼簡單DTO(d ATA 牛逼轉讓(BOT)Ø bject)就足夠了。
是這樣的:
public class ReturnRowDTO
{
public String Percent { get; set; }
}
現在,我們可以定義一個RowFixture將返回我們的定製DTO對象的列表。我們還需要創建一種將BusinessObjects轉換爲ReturnRowDTO的方法。我們最終得到了一個像這樣的Fixture。
public class ExampleRowFixture: fit.RowFixture
{
private ISomeService _someService;
public override object[] Query()
{
BusinessObject[] list = _someService.GetBusinessObjects();
return Array.ConvertAll(list, new Converter<BusinessObject, ReturnRowDTO>(ConvertBusinessObjectToDTO));
}
public override Type GetTargetClass()
{
return typeof (ReturnRowDTO);
}
public ReturnRowDTO ConvertBusinessObjectToDTO(BusinessObject businessObject)
{
return new ReturnRowDTO() {Percent = businessObject.Percent.ToString("%")};
}
}
您現在可以更改基礎BusinessObjects而不會破壞實際的Fit測試。希望這可以幫助。
我不確定「污染」是什麼。要麼是要求您的業務對象返回一個以百分比表示的值,在這種情況下,您的業務對象應該提供 - 或者 - 您正在測試響應的真實值作爲float,您現在擁有該值。
試圖讓fitnesse按摩值的可讀性似乎有點奇怪。