Я пытаюсь проверить свой метод удаления для моей службы, чтобы сделать это. Я пытаюсь сначала добавить элемент в репозиторий. Однако, я не думаю, что мой метод добавления репозитория вызывается, потому что _mockRepository.Object.GetAll()
всегда имеет значение null. Я попытался вмешаться в отладчик, и он просто проскакивает над ним. Что я делаю не так?Moq testing Метод удаления
public class CommentServiceTest
{
private Mock<IRepository<Comment>> _mockRepository;
private ICommentService _service;
private ModelStateDictionary _modelState;
public CommentServiceTest()
{
_modelState = new ModelStateDictionary();
_mockRepository = new Mock<IRepository<Comment>>();
_service = new CommentService(new ModelStateWrapper(_modelState), _mockRepository.Object);
}
[Fact]
public void Delete()
{
var comment = new Comment("BodyText")
{
Audio = new Audio(),
Date = DateTime.Now
};
_mockRepository.Object.Add(comment);
//Nothing in repository collection here still
var commentToDelete = _mockRepository.Object.GetAll().First();
_service.Delete(commentToDelete);
Assert.DoesNotContain(commentToDelete, _mockRepository.Object.GetAll());
}
}
public class Repository<T, TC> : IRepository<T> where T : class where TC : DbContext
{
private bool _disposed;
protected TC Context { get; }
public Repository()
{
}
public Repository(TC context)
{
Context = context;
}
public virtual IQueryable<T> GetAll()
{
return Context.Set<T>();
}
public virtual void Add(T entity)
{
Context.Set<T>().Add(entity);
Save();
}
public virtual void Save()
{
Context.SaveChanges();
}
}
}