0

那是一段 servlet 代码。我不知道如何通过模拟来覆盖它。我创建了像 ServletConfig、LoginServiceFactory 和 LoginService 这样的模拟对象,但我不知道如何为 Class.forName 创建模拟。那是调用的静态方法和其他方法,如 newInstance 或 getConstructor。我试图在模拟中调用 lsf.getClass().newInstance() expect 但它没有用。你知道如何解决它吗?提前致谢。

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

}
4

1 回答 1

0

现在我知道了这个问题的答案,我应该创建 LoginServiceFactory 的实现并通过反射搜索它,所以在 init 参数中会有我的类的名称,它实现了接口 LoginServiceFactory。

于 2013-04-04T07:11:15.813 回答