Unit testing 检索已创建对象的单元测试

Unit testing 检索已创建对象的单元测试,unit-testing,nunit,moq,Unit Testing,Nunit,Moq,我不熟悉单元测试,我正在尝试创建一个测试,以确保我可以检索到创建的用户。当我运行测试时,我在模拟上得到了一次预期的调用,但是得到了0次:m=>m.AddIt.IsAny。没有设置配置错误。错误发生在mockSet行上。请验证 我正在调用Context.Employees.Addemployee,所以我不知道为什么当我验证它时,它会说它没有被调用。请添加.ReturnsDbSet方法MOQ没有这个方法…@OldFox谢谢,这就是问题所在。我本想去的。Returns@Andrew这个问题解决了吗?@

我不熟悉单元测试,我正在尝试创建一个测试,以确保我可以检索到创建的用户。当我运行测试时,我在模拟上得到了一次预期的调用,但是得到了0次:m=>m.AddIt.IsAny。没有设置配置错误。错误发生在mockSet行上。请验证


我正在调用Context.Employees.Addemployee,所以我不知道为什么当我验证它时,它会说它没有被调用。

请添加.ReturnsDbSet方法MOQ没有这个方法…@OldFox谢谢,这就是问题所在。我本想去的。Returns@Andrew这个问题解决了吗?@Nkosi是的,我想我只是改变了。返回设置为。返回
[Test]
public void ShouldRetrieveCreatedUser()
{
    var mockSet = new Mock<DbSet<Employee>>();

    var mockContext = new Mock<SqlContext>();
    mockContext.Setup(e => e.Employees).ReturnsDbSet(mockSet.Object);

    var sut = new EmployeeRepository(mockContext.Object);

    var employeeToSave = new Employee
    {
        FirstName = "John",
        LastName = "Smith",
        Email = "John.Smith@gmail.com",
        IsActive = true,
        DateCreated = DateTime.Now,
        CreatedBy = "System",
        DateUpdated = DateTime.Now,
        UpdatedBy = "System"
    };

    sut.Save(employeeToSave);

    mockSet.Verify(m => m.Add(It.IsAny<Employee>()), Times.Once());
    mockContext.Verify(m => m.SaveChanges(), Times.Once());
}
public void Save(Employee employee)
{
    if (employee.EmployeeId > 0)
    {
        Employee dbEmployee = Context.Employees.Find(employee.EmployeeId);
        Context.Entry(dbEmployee).CurrentValues.SetValues(employee);
    }
    else
    {
        Context.Employees.Add(employee);
    }

    Context.SaveChanges();
}