Esfuerzo (EF Unit Testing) dando errores.

c# effort entity-framework unit-testing

Pregunta

Estoy tratando de hacer pruebas unitarias en algunas clases que responden en un contexto de base de datos de Entity Framework. En busca de ayuda, logré encontrar una biblioteca llamada Effort, que parece ser un poco antigua y no está muy bien documentada, pero parece funcionar y parece ser bastante popular.

Estoy tratando de usar un cargador de datos CSV.

Cuando hago un ToArray() recibo una excepción que dice que la Sequence contains no matching element .

¿Alguna idea sobre lo que podría estar haciendo incorrectamente? ¿O si no es una biblioteca diferente me gustaría dar una oportunidad?

Algunos fragmentos:

[Table("SEC_USER")]
public class SecUser {
    [Key][Column("USERID")]
    public int UserId { get; set; }

    [Column("USERNAME")]
    public string UserName { get; set; }
}

Contexto DB:

[Table("SEC_USER")]
public class SecUser {
    [Key][Column("USERID")]
    public int UserId { get; set; }

    [Column("USERNAME")]
    public string UserName { get; set; }
}

El SEC_USER.csv:

[Table("SEC_USER")]
public class SecUser {
    [Key][Column("USERID")]
    public int UserId { get; set; }

    [Column("USERNAME")]
    public string UserName { get; set; }
}

La prueba:

[Table("SEC_USER")]
public class SecUser {
    [Key][Column("USERID")]
    public int UserId { get; set; }

    [Column("USERNAME")]
    public string UserName { get; set; }
}

System.InvalidOperationException:

[Table("SEC_USER")]
public class SecUser {
    [Key][Column("USERID")]
    public int UserId { get; set; }

    [Column("USERNAME")]
    public string UserName { get; set; }
}

Respuesta popular

Acabo de tener este problema y descubrí que el problema era que estaba usando la anotación de datos ColumnType . Incluso cuando cambié a usar la convención de constructores de HasColumnType de HasColumnType , todavía obtuve exactamente el mismo error. Supongo que una de sus entidades tiene esa anotación de datos (o convención)?

Si ese es el caso, la solución más simple sería eliminar la anotación de datos. Si no es posible, he creado una propiedad virtual (p. Ej., public virtual bool IsInMemoryContext { get; } = false; ) en el DbContext que anulé en mis pruebas: public override bool IsInMemoryContext { get; } = true; , y en el método OnModelCreating , verifiqué si esta propiedad estaba establecida, antes de agregar los tipos de columna.

if (!IsInMemoryContext)
{
    modelBuilder.Entity<AuditLog>()
        .Property(e => e.EventType)
        .HasColumnType("char");
}

Más información sobre el error se puede encontrar aquí: problema de GitHub con Effort




Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué