我正在尝试为Play Framework 2.2编写单元测试。我要测试的课程会调用Play插件,例如

Exception e = new Exception();
MongoLogger.error(e);


插件的类定义为

MongoLogger extends Plugin


我如何使用Mockito模拟并注册该课程。我想避免对单元测试使用FakeApplication。任何帮助,将不胜感激。

最佳答案

使用包装器设计模式将对MongoLogger的调用封装到接口:

public interface Logger {
    // methods
}

public interface DefaultLogger implements Logger {

    private final MongoLogger mongoLogger;

    public void error(Object e){
        monoLogger.error(e);
    }

}


在生产代码中,无论您在何处调用Logger,都使用MongoLogger界面。在测试代​​码中,注入模拟对象:

Mockito.mock(Logger.class);

07-24 09:34