Autofixture: Agregar el método Create (Type) no genérico

Creado en 19 nov. 2015  ·  2Comentarios  ·  Fuente: AutoFixture/AutoFixture

Yo (ab) uso Autofixture para generar ejemplos de documentación para una API web. Los mensajes (comandos y consultas) que Autofixture creará para mí se serializan en JSON y pasan a formar parte de la documentación. Esto funciona realmente muy bien, y se necesitan unas pocas líneas de código, en comparación con los cientos de líneas de código feo que genera la plantilla VS para Web API en su área / HelpPage (puaj).

Actualmente utilizo el siguiente código para lograr esto:

`` c #
privado estático de solo lectura MethodInfo CreateMethodInfo =
GetMethod (() => SpecimenFactory.Create(nuevo accesorio ()))
.GetGenericMethodDefinition ();

objeto estático público Crear (tipo de tipo)
{
var fixture = new Fixture ();
int índice = 1;
fixture.Register (() => "texto de muestra" + índice ++);

return CreateMethodInfo.MakeGenericMethod(type).Invoke(null, new object[] { fixture });

}

MethodInfo estático privado GetMethod (Expression> methodCall) =>
((MethodCallExpression) methodCall.Body) .Method;
''

Como no conozco el mensaje exacto en el momento de la compilación, no puedo llamar al método Fixture.Create<T>() Autofixture. Como muestra el código anterior, la forma en que resolví esto actualmente es invocando este método genérico Create<T> usando la reflexión.

¿Existe una forma más sencilla de lograr mi objetivo y, de no ser así, se podría agregar Create(Type) método

Comentario más útil

¿Funcionaría esta solución?

c# var specimen = new SpecimenContext(fixture).Resolve(type);

Todos 2 comentarios

¿Funcionaría esta solución?

c# var specimen = new SpecimenContext(fixture).Resolve(type);

¡Frio! ¡Eso hace el truco! Gracias.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

JoshKeegan picture JoshKeegan  ·  6Comentarios

DeafLight picture DeafLight  ·  5Comentarios

zvirja picture zvirja  ·  3Comentarios

Accc99 picture Accc99  ·  4Comentarios

joelleortiz picture joelleortiz  ·  4Comentarios