Aufwand (EF Unit Testing) gibt Fehler

c# effort entity-framework unit-testing

Frage

Ich versuche Unit-Tests für einige Klassen durchzuführen, die auf einen Entity Framework-DB-Kontext antworten. Um Hilfe zu bekommen, gelang es mir, eine Bibliothek mit dem Namen "Anstrengung" zu finden, die ein wenig alt und nicht sehr gut dokumentiert zu sein scheint, aber es scheint zu funktionieren und scheint ziemlich populär zu sein.

Ich versuche einen CSV-Datenlader zu verwenden.

Wenn ich ein ToArray() mache, ToArray() ich eine Ausnahme, die besagt, dass die Sequence contains no matching element .

Irgendwelche Ideen, was ich falsch machen könnte? Oder wenn nicht eine andere Bibliothek ich eine Chance geben möchte?

Ein paar Schnipsel:

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

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

DB-Kontext:

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

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

Die SEC_USER.csv:

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

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

Der Test:

[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; }
}

Beliebte Antwort

Ich hatte gerade dieses Problem und entdeckte das Problem, dass ich die ColumnType verwendete. Selbst wenn ich zur Verwendung der Model Builder-Konvention von HasColumnType , bekam ich immer noch genau den gleichen Fehler. Ich nehme an, eine Ihrer Entitäten hat diese Datenannotation (oder Konvention)?

Wenn dies der Fall ist, besteht die einfachste Lösung darin, die Datenanmerkung zu entfernen. Wenn nicht möglich, habe ich eine virtuelle Eigenschaft (zB public virtual bool IsInMemoryContext { get; } = false; ) auf dem DbContext erstellt, den ich in meinen Tests übersteuert habe - public override bool IsInMemoryContext { get; } = true; In der OnModelCreating Methode habe ich vor dem Hinzufügen der OnModelCreating überprüft, ob diese Eigenschaft festgelegt wurde.

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

Weitere Informationen zum Fehler finden Sie hier: GitHub-Problem mit Aufwand




Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum