2016-11-30 2 views
2

Wie können wir die Kaskadenlöschung von Entitäten in Entity Framework testen?Wie Unit-Test kaskadieren Löschen von Entitäten in Entity Framework?

Ich habe zwei Entitäten [Parent und Child] und ich benutze FakeDbset (In Speicher-Sammlung), wenn ich Eltern löschen dann ihre alle Kind aus der Datenbank im Falle der Kaskade gelöscht werden, dann, wie das gleiche Szenario getestet in FakeDbSet?

Ich weiß Kaskade ist Datenbank-Funktion, ist Aufwand Arbeit in dieser Situation?

+1

Sie nicht Unit-Test dieser. Wenn die Einschränkung aus der Datenbank entfernt wird (aus welchem ​​Grund auch immer, möglicherweise ein fehlerhaftes Upgrade-Skript), werden Ihre Komponententests dies nie bemerken. Dies ist ein Fall für Integrationstests oder End-to-End-Tests. –

Antwort

1

https://github.com/aspnet/EntityFramework/issues/3924

Das half mir, Sie müssen das Kind in Ihrem Kontext haben, so dass Sie das Kind mit Eager Loading .INCLUDE müssen.

Dieser folgende Code ist von der Verbindung I angehängt:

[Fact] 
void test_written_in_notepad() 
{ 
    List<int> childIds; 
    using (var context = CreateInMemoryContext()) 
    { 
     var parent = context.Parents.Include(p => p.Children).FirstOrDefault(p => p.Id == 1); 
     childIds = p.Children.Select(c => c.Id).ToList(); 
     context.Remove(parent); 
     context.SaveChanges(); 
    } 

    using (var context = CreateInMemoryContext()) 
    { 
     Assert.Empty(context.Children.Where(c => childIds.Contains(c.Id)); 
    } 
} 
Verwandte Themen