Доброго времени суток! У меня есть такой вопрос: у меня есть веб-прриложение asp.net mvc которое работает с базой данных через Entity Frammework. Для работы с Entity я создал класс-провайдер выполняющий стандартные CRUD операции. Хотелось бы все это дело покрыть юнит тестами как у крутых мужиков. Но слышал что юнит тесты не должны работать с базой данных. И это вроде как логично - допустим я хочу потестировать операции вставки, обновления и удаления у своего репозитория но будет странно если тестовый код будет осуществлять эти операции с реальной базой (пусть даже и тестовой).
Пример теста с использованием Moq найденный на просторах интернета
// интерфейс репозитория
interface IRepository : IDisposable
{
List<Computer> GetComputerList();
Computer GetComputer(int id);
void Create(Computer item);
void Update(Computer item);
void Delete(int id);
}
// тестовый метод
[TestMethod]
public void IndexViewBagMessage()
{
var mock = new Mock<IRepository>();
mock.Setup(a => a.GetComputerList()).Returns(new List<Computer>() { new Computer()});
// какая то логика тестирования
}
Но тогда возникает вопрос - а какой у этого всего смысл? Ведь в моке мы подставляем фейковые данные. То есть я вроде кк хочу протестировать работу моего репозитория а вместо этого методы самого репозитория не используются, а вместо них используются подставные данные из мока.
Отсюда вопрос: как все же правильно будет тестировать рнепозиторий и в чем смысл найденого мной примера?