Jednostka testująca Framework Entity z Mock IDbSet

Nigdy wcześniej nie przeprowadzałem testów jednostkowych i potknąłem się i potknąłem podczas pierwszego testu. Problem polega na tym, że_repository.Golfers.Count(); zawsze wskazuje, żeDbSet jest pusty.

Mój test jest prosty, próbuję tylko dodać nowego golfistę

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

Zbudowałem model danych przy użyciu Entity Framework i code-first. Wyszydziłem klasę pochodną dla IDbSet, aby przetestować mój kontekst (dyktować ludziom online, których nie pamiętam dokładnie)

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
}

Kiedy debuguję i przechodzę przez kod, widzę, że tworzę instancję_repository i wypełnij go trzema sfałszowanymi golfistami, ale kiedy wyjdę z funkcji dodawania,_respoistory.Golfers jest znowu pusty. kiedy dodam nowego golfistę,_set.Add(entity) biegnie i golfista zostaje dodany, ale znowu_respoistory.Golfers jest pusty. Czego mi tu brakuje?

Aktualizacja

Przepraszam za bycie idiotą, ale nie zaimplementowałemset na moimMockGolfEntities kontekst. Powodem, dla którego tego nie zrobiłem, było to, że próbowałem wcześniej, ale nie mogłem się dowiedzieć, jak, poszedłem dalej i zapomniałem o tym. Jak więc ustawićIDbSet? To właśnie próbowałem, ale daje mi błąd przepełnienia stosu. Czuję się jak idiota, ale nie wiem, jak napisać ustawioną funkcję.

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

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

questionAnswers(1)

yourAnswerToTheQuestion