Unidad de prueba Entity Framework con Mock IDbSet

Nunca antes había hecho pruebas de unidad, y tropecé y tropecé en mi primera prueba. El problema es que la_repository.Golfers.Count(); siempre indica que elDbSet esta vacio.

Mi prueba es simple, solo intento agregar un nuevo golfista

[TestClass]
public class GolferUnitTest //: GolferTestBase
{
    public MockGolfEntities _repository;

    [TestMethod]
    public void ShouldAddNewGolferToRepository()
    {
        _repository = new MockGolfEntities();

        _repository.Golfers = new InMemoryDbSet<Golfer>(CreateFakeGolfers());

        int count = _repository.Golfers.Count();
        _repository.Golfers.Add(_newGolfer);

        Assert.IsTrue(_repository.Golfers.Count() == count + 1);
    }

    private Golfer _newGolfer = new Golfer()
    {
        Index = 8,
        Guid = System.Guid.NewGuid(),
        FirstName = "Jonas",
        LastName = "Persson"
    };
    public static IEnumerable<Golfer> CreateFakeGolfers()
    {
        yield return new Golfer()
        {
            Index = 1,
            FirstName = "Bill",
            LastName = "Clinton",
            Guid = System.Guid.NewGuid()
        };
        yield return new Golfer()
        {
            Index = 2,
            FirstName = "Lee",
            LastName = "Westwood",
            Guid = System.Guid.NewGuid()
        };
        yield return new Golfer()
        {
            Index = 3,
            FirstName = "Justin",
            LastName = "Rose",
            Guid = System.Guid.NewGuid()
        };
    }

He construido un modelo de datos utilizando Entity Framework y el código primero. Me burlé de una clase derivada de IDbSet para probar mi contexto (una reverencia para las personas en línea que no puedo recordar exactamente)

public class InMemoryDbSet<T> : IDbSet<T> where T : class
{
    readonly HashSet<T> _set;
    readonly IQueryable<T> _queryableSet;

    public InMemoryDbSet() : this(Enumerable.Empty<T>()) { }

    public InMemoryDbSet(IEnumerable<T> entities)
    {
        _set = new HashSet<T>();

        foreach (var entity in entities)
        {
            _set.Add(entity);
        }

        _queryableSet = _set.AsQueryable();
    }

    public T Add(T entity)
    {
        _set.Add(entity);
        return entity;

    }

    public int Count(T entity)
    {
        return _set.Count();
    }

    // bunch of other methods that I don't want to burden you with
}

Cuando depuro y paso a través del código puedo ver que hago una instancia de_repository y llénelo con tres jugadores de golf falsos, pero cuando salgo de la función de agregar, el_respoistory.Golfers está vacío de nuevo. cuando agrego un nuevo golfista, el_set.Add(entity) corre y se agrega el golfista, pero de nuevo_respoistory.Golfers esta vacio. ¿Que me estoy perdiendo aqui?

Actualizar

Lo siento por ser un idiota, pero no había implementado elset en miMockGolfEntities contexto. La razón por la que no lo hice es que lo intenté antes, pero no pude averiguar cómo, me moví y me olvidé de ello. Entonces, ¿cómo puedo configurar unIDbSet? Esto es lo que he intentado, pero me da un error de desbordamiento de pila. Me siento como un idiota, pero no sé cómo escribir la función de configuración.

public class MockGolfEntities : DbContext, IContext
{
    public MockGolfEntities() {}

    public IDbSet<Golfer> Golfers { 
        get {
            return new InMemoryDbSet<Golfer>();
        }
        set {
            this.Golfers = this.Set<Golfer>();
        }
    }
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta