Пытается размыть мой контекст EF, который связан с моим репозиторием. Я использую Moq, пытаясь настроить изделенный контекст и передать его в репозиторий конструктором.Mocking DbContext для репозитория TDD
После этого Im вызывающего метод Add, чтобы просто добавить новый объект, который я после этого попытаться Утверждаю, проверяя, если контекст я перешел в состоянии изменился ...
Ошибки Im получения является NullReference Exception и я думаю, его, потому что мой насмешливый не правильно ..
Это код:
Тест с не работает макет
[TestClass]
public class GameRepositoryTests
{
[TestMethod]
public void PlayerThatWonMustBeAddedToTopList()
{
// Arrange
var expected = "Player added successfully";
var dbContextMock = new Mock<Context>();
// Need to setup the Context??
IRepository gameRepository = new GameRepository(dbContextMock.Object);
var user = "MyName";
// Act
gameRepository.Add(user);
// Assert
dbContextMock.VerifySet(o => o.Entry(new ScoreBoard()).State = EntityState.Added);
}
}
public class ScoreBoard
{
}
Repository
public class GameRepository : IRepository
{
private readonly Context _context;
public GameRepository()
: this(new Context())
{
// Blank!
}
// Passing in the Mock here...
public GameRepository(Context context)
{
this._context = context;
}
// Method under test...
public void Add<T>(T entity) where T : class
{
_context.Set<T>().Add(entity);
}
}
Контекст
public class Context : DbContext
{
public Context()
: base("name=DefaultConnection")
{
}
}
Какая строка выдает исключение? Какой объект является «нулевым»? Где этот объект установлен? Я бы * угадал *, что '. Set()' возвращает 'null'. Кажется, что макет должен быть проинформирован о том, что вернуть с этого во время этапа «Упорядочить». –
David
_context.Set() .Add (entity); <--- Эта строка. И потому, что контекст не издевается правильно. Удивительно, как я должен настроить его? –
Rovdjuret
И это еще одна причина, по которой репозитории с Entity Framework - это плохая идея. Вы буквально проверяете, что метод 'Add' вашего репо вызывает метод' Add' 'DbSet'. Вот некоторые из них. –