Я пытался протестировать единый запрос, который я создал, используя шаблон репозитория, но я не могу понять, что это. Похоже, я тут что-то не так делаю.
Итак, я создал общий репозиторий, который может выглядеть примерно так:
public interface IRepository<T> where T:class,IEntity, new()
{
IQueryable<T> Get();
T Get(int id);
T Add(T entity);
T Update(T entity);
void Delete(int id);
}
У меня также есть контекст, который может выглядеть следующим образом:
public class ApplicationContext:DbContext
{
public virtual DbSet<Customer> Customers { get; set; }
public virtual DbSet<User> Users { get; set; }
}
так что теперь у меня, конечно, теперь есть хранилище, которое выглядит как IRepository<Customer> customersRepository.
В моем контроллере у меня есть запрос, который может выглядеть так:
var customers = _customerRepository
.Get()
.Include(customer => customer.Users)
.Where(customer=>customer.Status == "active")
.ToList();
Итак, на мой вопрос, я хотел бы проверить это, но я получаю сообщение об ошибке
Значение не может быть нулевым
мой юнит-тест выглядит так:
[TestMethod]
public void GetCustomerList_ValidParameters_ShouldOnlyReturnItemsWithActiveStatus()
{
//Act
var customers = _customerModel.GetCustomerList(
_parentId, /*parentId*/
string.Empty, /*keywords*/
1, /*page*/
20, /*count*/
out var totalCount, /*totalCount*/
null /*orderBy*/
);
//Assert
Assert.AreEqual(expected:3, actual: customers.Count);
}
мои настройки данных выглядят так:
private void AddDataToRepository()
{
var customers = new List<Customer>()
{
new Customer{Id = Guid.NewGuid().ToString(), Name = "ABC", Status = "active", Parent_id = _parentId},
new Customer{Id = Guid.NewGuid().ToString(), Name = "DEF", Status = "canceled", Parent_id = _parentId},
new Customer{Id = Guid.NewGuid().ToString(), Name = "HIJ", Status = "active", Parent_id = _parentId},
new Customer{Id = Guid.NewGuid().ToString(), Name = "MNO", Status = "suspended", Parent_id = _parentId},
new Customer{Id = Guid.NewGuid().ToString(), Name = "QRS", Status = "active", Parent_id = _parentId},
};
var users = new List<User>();
var usersMock = new Mock<DbSet<User>>();
_customerRepositoryMock.Setup(x => x.Get().Include(It.IsAny(typeof(User))));
_customerRepositoryMock.Setup(x => x.Get()).Returns(customers.ToDbSet());
}
Как тут издеваться над пользователями.