我正在尝试涵盖看起来像这样的方法
protected SessionBuilderConfigurer getSessionBuilderConfigurer() {
return cqlSessionBuilder -> {
ProgrammaticDriverConfigLoaderBuilder programmaticDriverConfigLoaderBuilder;
programmaticDriverConfigLoaderBuilder = getCassandraWithoutSslConfiguration();//Local method
DriverConfigLoader driverConfigLoader = programmaticDriverConfigLoaderBuilder.build();
return cqlSessionBuilder
.withConfigLoader(driverConfigLoader)
.withAuthCredentials(properties.getUsername(), properties.getPassword());
};
}
JUnit 根本没有涵盖这一点。
J单位:
//Class level
@ExtendWith(MockitoExtension.class)
@InjectMocks WaausCassandraConfiguration configuration;
//Inside method
Assertions.assertNotNull(configuration.getSessionBuilderConfigurer());
getSessionBuilderConfigurer()
使用 lambda 创建一个 SessionBuilderConfigurer
对象,是某种方法的实现(可能是 SessionBuilderConfigurer.configure()
)。
如果你想执行 lambda 中的代码,你需要执行该方法:
CqlSessionBuilder sessionBuilder = mock(CqlSessionBuilder.class);
// the following line create the SessionBuilderConfigurer
SessionBuilderConfigurer configurer = configuration.getSessionBuilderConfigurer();
// the following line calls the lambda
configurer.configure(sessionBuilder);
// now you need to assert that the correct methods on the sessionBuilder have been called