Pregunta

Soy nuevo en Pex and Moles.Estoy tratando de ejecutar Pex en mi código pero estoy usando la inyección de Constructor.¿Hay alguna forma de instruir a Pex sobre cómo inyectar los constructores?

Editar

    public UserLogic(IUserRepository userRepository)
    {
        _userRepository = userRepository;
    }

    public int GetUsersAge(int id)
    {
        User user = _userRepository.GetById(id);
        DateTime DOB = user.DOB;
        DateTime now = DateTime.Today;
        int age = now.Year - DOB.Year;
        if (DOB > now.AddYears(-age)) age--;
        return age;
    }

Necesito inyectar un stub userRepository.Pex está fallando con una NullReferenceException cuando se llama a _userRepository.GetById (id).He estado usando Moq para mis pruebas unitarias pero quiero cambiar a pex y moles

¿Debo usar PexFactories para crear mis stubs?

¿Fue útil?

Solución

Intente pasar un tipo de Stub Moles a una prueba parametrizada generada por Pex. Para crear una prueba parametrizada, haga clic con el botón derecho en la clase que desea explorar y luego seleccione PEX> Crear prueba de unidad parametrizada . Esto genera un método en la clase de prueba que contiene argumentos. Las pruebas individuales llaman a esta prueba parametrizada y envían los argumentos de prueba individuales.

Cuando el código bajo prueba usa la inyección de dependencia por medio de argumentos (tiene un argumento de tipo interfaz), el método de prueba paramterizado generado por Pex también contendrá el mismo argumento de tipo de interfaz. Puede escribir sus propios métodos de prueba que también llaman al método parametrizado, alimentándolo con sus propios valores, incluido el tipo de interfaz. ¡Solo asegúrese de no escribirlos en el archivo generado por Pex!

También sugiero considerar el uso de tipos de Mole Stub, para sus inyecciones de prueba unitaria. El Manual de referencia de Microsoft Moles es un excelente lugar para comenzar a aprender. sobre cómo usar Moles en pruebas unitarias. Se creará un tipo de talón de moles para su interfaz cuando cree la prueba parametrizada. Simplemente configure los desvíos para su tipo de código auxiliar y luego páselo a la prueba parametrizada.

Crear desvíos de tipo stub es muy fácil. Sugiero crear un método de configuración en el proyecto de prueba, que configure desvíos de uso frecuente. Por lo general, agrego una marca de enumeración como argumento a este método, por lo que puedo decirle fácilmente qué desvíos crear en ciertos tipos, todo en una llamada.

Ejemplo de enumeración:

[Flags()]
public enum MoleConfigurations
{
    MoleSqlClientObjects,
    DisableDirectory_Exists,
    DisableEventLogExtensions,
    DisableInitializeDatabaseObjects,
    DisableInitializeThreadingObjects,
    DisableQueueExistingDataFiles,
    DisableConstructor
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top