Vous ne voulez certainement pas modifier votre Business Logic pour que vos tests soient meilleurs. Bonnes nouvelles cependant, il existe un moyen d'accomplir ce qui n'est pas difficile, mais pas aussi facile que de passer dans un spécificateur de format. Essayez de penser à votre dispositif d'ajustement en tant que limite de service entre FitNesse et votre code d'application. Vous souhaitez définir un contrat qui ne doit pas nécessairement changer si les détails de mise en œuvre de votre SUT (S ystème U nder T est) le changement.
permet de regarder une version simplifiée de votre Business Object:
public class BusinessObject
{
public float Percent { get; private set; }
}
Becuase de la façon dont un RowFixture fonctionne, nous devons définir un objet simple qui fonctionnera comme le contrat. Ordinairement nous utiliserions une interface, mais qui ne va pas servir notre but ici si un simple, DTO (D ata T RANSFERT O bjet) suffit.
quelque chose comme ceci:
public class ReturnRowDTO
{
public String Percent { get; set; }
}
Maintenant, nous pouvons définir un RowFixture qui retourne une liste de nos objets personnalisés DTO. Nous devons également créer un moyen de convertir BusinessObjects en ReturnRowDTOs. Nous nous retrouvons avec un appareil qui ressemble à ceci.
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("%")};
}
}
Vous pouvez maintenant changer BusinessObjects sous-jacents autour sans casser vos tests réels Fit. J'espère que cela t'aides.