mercredi 23 septembre 2015

Unit Test for retrieving created object

I am new to unit testing and I am trying to create a test to make sure I can retrieve a created user. When I run the test I get a Expected invocation on the mock once, but was 0 times: m => m.Add(It.IsAny<Employee>()). No setups configured error. (The error occurs on the line mockSet.Verify(...);

[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());
}

My repository looks like:

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();
}

I am calling Context.Employees.Add(employee) so I am not sure why when I verify it it is saying that it is not being called.

Aucun commentaire:

Enregistrer un commentaire