Testowanie: Entity Framework przez fałszowanie kontekstu

W tej chwili zjadam się. To jest jak Entity Framework nie jest testowalny. Przeczytałem wiele postów i wątków, w których używają jednostki pracy lub moq lub wzorca repo.

Jestem w fazie, w której nie mogę zmienić wiele mojej architektury mojej aplikacji. Aplikacja w pełni działa w tej chwili, ale aby mieć pewność, że muszę mieć wysoki zasięg kodu, więc testowanie jest.

Do testowania używam metody „fałszywego kontekstu”, w której mogę użyć fałszywego do szyderstwa i prawdziwego do połączenia z bazą danych.

Użyłem tego jako przykładu.http://romiller.com/2010/09/07/ef-ctp4-tips-tricks-testing-with-fake-dbcontext/

Widać tam, że kontekst jest podzielony i używany jako interfejs. Lubić:

    public interface IEmployeeContext
    {
        IDbSet Department Departments { get; }
        IDbSet Employee Employees { get; }
        int SaveChanges();
    }

    public class EmployeeContext : DbContext, IEmployeeContext
    {
        public IDbSet Department Departments { get; set; }
        public IDbSet Employee Employees { get; set; }
    }

    public class FakeEmployeeContext : IEmployeeContext
    {
        public FakeEmployeeContext()
        {
            this.Departments = new FakeDepartmentSet();
            this.Employees = new FakeEmployeeSet();
        }

        public IDbSet Department Departments { get; private set; }

        public IDbSet Employee Employees { get; private set; }

        public int SaveChanges()
        { 
         return 0; 
        }
    }

    }

Tak działa i wszystko działa. Jedyne, czego nie mogę zrobić, to przetestować kontroler za pomocą .State, w którym sprawdzam, czy został zmieniony. Like: EntityState.Modified

Ponieważ używa interfejsu, muszę dodać to do kontekstu interfejsu. I stwórz nowy. Czy coś mi brakuje? Prawdopodobnie nie mam zamiaru tworzyć całej metody w tym kontekście. Jak mogę to zrobić

questionAnswers(3)

yourAnswerToTheQuestion