EF6 Spott abgeleitet DbSets

Ich versuche, gelten die neuen Spott von EF6 zu meinem bestehenden code.

Ich habe eine Klasse, die Sie Erweitert DbSet. Eine der Methoden-Aufruf der Basisklasse (BdSet) Create-Methode. Hier ist ein Beispiel-code (nicht die komplette Lösung-oder real-Namen):

public class DerivedDbSet<TEntity> : DbSet<TEntity>, IKeyValueDbSet<TEntity>, IOrderedQueryable<TEntity> where TEntity : class
{
    public virtual bool Add(string value1, string value2) {
        var entity = Create(); //There is no direct implementation of the Create method it is calling the base method
        //Do something with the values
        this.Add(entity);
        return true;
    }
}

Ich bin mocking mit der Test-Doppel-Probe (hier ist der Frieden-code):

var data = new List<DummyEntity> {
    new DummyEntity { Value1 = "First", Value2 = "001" },
    new DummyEntity { Value1 = "Second", Value2 = "002" }
}.AsQueryable();
var mock = new Mock<DerivedDbSet<DummyEntity>>();
mock.CallBase = true;
mock.As<IQueryable<T>>().Setup(m => m.Provider).Returns(source.Provider);
mock.As<IQueryable<T>>().Setup(m => m.Expression).Returns(source.Expression);
mock.As<IQueryable<T>>().Setup(m => m.ElementType).Returns(source.ElementType);
mock.As<IQueryable<T>>().Setup(m => m.GetEnumerator()).Returns(source.GetEnumerator());

Ich habe den CallBase-Eigenschaft auf true, um zu versuchen zu zwingen, den Aufruf der Basisklasse...

Aber ich bekomme immer wieder die folgende Fehlermeldung:

System.NotImplementedException: Das Mitglied 'Erstellen' wurde noch nicht implementiert Typ 'DerivedDbSet1Proxy' which inherits from 'DbSet1'. Test doubles für 'DbSet`1' muss der Implementierungen von Methoden und Eigenschaften, die verwendet werden.

Möchte ich den Aufruf von create fallback auf die default-Implementierung in der DbSet.

Kann mir jemand helfen mit, dass?

InformationsquelleAutor Andre Vianna | 2014-02-21
Schreibe einen Kommentar