mercredi 31 décembre 2014

Unit Test - New Operator - Redesign and Inject

The following class is very hard to unit test:



public class UserService
{
public void Update(User user)
{
UserDAO userDAO = new UserDAO();
userDAO.update(user);
}
}


In chapter 7.6.2 of the book Practical Unit Testing with JUnit and Mockito, Tomek Kaczanowsk suggest we should inject as following:



public class UserService
{
private UserDAO _userDAO;

public UserService(UserDAO userDao)
{
_userDAO = userDAO;
}

public void Update(User user)
{
_userDAO.update(user);
}
}


However, how can we use UserService without creating UserDao?



public class UserController
{
public UserController()
{
// How do we initialize UserService without understanding about UserDAO here
}

public ActionResult Update()
{
var user = new User();
_userService.Update(user);
}
}

Aucun commentaire:

Enregistrer un commentaire