gpt4 book ai didi

c# - 使用 Moq 模拟存储库

转载 作者:行者123 更新时间:2023-12-04 12:52:29 25 4
gpt4 key购买 nike

为了模拟存储库,我使用了下面的代码。我不明白为什么变量 empl 总是 null

你知道我错过了什么吗?

谢谢,

[TestMethod]
public void Test()
{
var employee = new Employee { EmployeeID = 1, Code = "Code", FirstName = "MyFirstName", LastName = "MyName" };

var employeeRepository = new Mock<IEmployeeRepository>();
employeeRepository.Setup(x => x.Add(employee)).Verifiable();

var employeeService = new EmployeeService(employeeRepository.Object);
var empl = employeeService.GetById(1);

Assert.IsNotNull(empl);
}

public class Employee
{
public int EmployeeID { get; set; }
public string Code { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}

public interface IEmployeeRepository : IBaseRepository<Employee> {}

public interface IBaseRepository<TEntity>
{
IQueryable<TEntity> Get();
TEntity Add(TEntity entity);
void Delete(int id);
int Count();
}

public class EmployeeService
{
private IEmployeeRepository _employeeRepository;

public EmployeeService(IEmployeeRepository employeeRepository)
{
_employeeRepository = employeeRepository;
}

public Employee GetById(int id)
{
return _employeeRepository.Get().FirstOrDefault(x => x.EmployeeID == id);
}

public void Add(Employee employee)
{
_employeeRepository.Add(employee);
}
}

最佳答案

你在 mock 错误的方法。模拟获取:

employeeRepository.Setup(x => x.Get()).Returns(new[] { employee });

Mock 是一个假对象,它在方法中没有任何逻辑。您必须告诉它它应该如何表现(设置),以便在您的测试中可以重放这种行为。

关于c# - 使用 Moq 模拟存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24690868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com