Ciertamente no desea modificar su lógica de negocios solo para que sus pruebas se vean mejor. Buenas noticias, sin embargo, hay una manera de lograr esto que no es difícil, pero no es tan fácil como pasar un especificador de formato.
Trate de pensar en su accesorio como un límite de servicio entre FitNesse y el código de su aplicación. Se desea definir un contrato que no necesariamente tiene que cambiar si los detalles de implementación de su SUT (S istemaT nder T est) el cambio.
veamos una versión simplificada de su objeto comercial:
public class BusinessObject
{
public float Percent { get; private set; }
}
Becuase de la forma en que funciona un RowFixture tenemos que definir un objeto simple que funcionará como el contrato. Normalmente deberíamos usar una interfaz, pero eso no va a servir a nuestro propósito aquí de manera sencilla un DTO (D ata T RANSFERENCIA Object) será suficiente.
algo como esto:
public class ReturnRowDTO
{
public String Percent { get; set; }
}
Ahora podemos definir un RowFixture que devolverá una lista de nuestros objetos personalizados DTO. También debemos crear una forma de convertir BusinessObjects a ReturnRowDTOs. Terminamos con un accesorio que se ve así.
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("%")};
}
}
Ahora puede cambiar sus BusinessObjects subyacentes sin romper sus pruebas de ajuste reales. Espero que esto ayude.