7

ビジネス オブジェクトのリストを返す Fitnesse RowFixture があります。オブジェクトには、0 から 1 の間のパーセンテージを表す float であるフィールドがあります。ビジネス オブジェクトのコンシューマーは、デザイナーが作成した Web ページまたはレポートになるため、パーセンテージの書式設定はデザイナー次第です。ビジネス オブジェクト。

数値をパーセンテージに変換するときに、ページがデザイナーをエミュレートできるとよいでしょう。つまり、0.5 を表示する代わりに、50% を表示する必要があります。しかし、表示コードでビジネス オブジェクトを汚染したくはありません。RowFixture でフォーマット文字列を指定する方法はありますか?

4

2 に答える 2

4

テストの見栄えを良くするためだけにビジネスロジックを変更したくないことは確かです。朗報ですが、これを実現する方法は難しくありませんが、フォーマット指定子を渡すほど簡単ではありません。

Fit Fixtureは、FitNesseとアプリケーションコードの間のサービス境界と考えてください。SUTS ystem U nder T est)の実装の詳細が変更された場合に、必ずしも変更する必要のないコントラクトを定義する必要があります。

ビジネスオブジェクトの簡略化されたバージョンを見てみましょう。

public class BusinessObject
{
    public float Percent { get; private set; }
}

RowFixtureが機能する方法のため、コントラクトとして機能する単純なオブジェクトを定義する必要があります。通常はインターフェースを使用しますが、ここでは目的を果たせないため、単純なDTOD ata T ransfer O bject)で十分です。

このようなもの:

public class ReturnRowDTO
{
    public String Percent { get; set; }
}

これで、カスタムDTOオブジェクトのリストを返すRowFixtureを定義できます。また、BusinessObjectsをReturnRowDTOに変換する方法を作成する必要があります。最終的には、次のようなフィクスチャになります。

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("%")};
        }
    }

これで、実際のフィットテストを中断することなく、基になるBusinessObjectを変更できます。お役に立てれば。

于 2008-09-19T21:58:48.023 に答える
0

「汚染」が何であるかはわかりません。いずれかの要件は、ビジネス オブジェクトがパーセンテージで表された値を返すことです。この場合、ビジネス オブジェクトはそれを提供する必要があります。または、応答の真の値をフロートとしてテストしています。これは現在のものです。

読みやすさの価値をマッサージするためにフィットネスを取得しようとするのは少し奇妙に思えます。

于 2008-09-19T19:57:58.827 に答える