0

That is a piece of servlet code. I have no idea how to cover it by mock. I created mock objecs like ServletConfig, LoginServiceFactory and LoginService but I don't know how to create mock for Class.forName. That is static method called and other methods like newInstance or getConstructor. I tried to call lsf.getClass().newInstance() expect in mock but it didn't work. Do you have any idea how to solve it? Thank's in advance.

public void init(ServletConfig config) throws ServletException {
        super.init(config);
        try {
            String loginServiceFactoryName = config
                    .getInitParameter("LoginServiceFactory");
            LoginServiceFactory lsf = (LoginServiceFactory)
            Class.forName(loginServiceFactoryName).getConstructor().newInstance();
            UserDataBase db = lsf.getUserDataBase();
            Encoder encoder = lsf.getEncoder();
            loginService = new LoginService(db, encoder);

}
RMachnik
  • 3,598
  • 1
  • 34
  • 51

1 Answers1

0

Now I know answer for this problem, I should create implementation of LoginServiceFactory and search it by Reflection so in init parameter there will be name of my class whitch implements interface LoginServiceFactory.

RMachnik
  • 3,598
  • 1
  • 34
  • 51