0

これはサーブレットコードの一部です。どうやってモックで覆うのかわからない。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の実装を作成し、Reflectionで検索する必要があります。これにより、initパラメーターに、インターフェイスLoginServiceFactoryを実装するクラスの名前が表示されます。

于 2013-04-04T07:11:15.813 に答える