I am trying to find answer to my question but unable to find something working. I have a class which does this
JavaScript
x
public class LambdaLoggerWrapper {
public LambdaLoggerWrapper(LambdaLogger lambdaLogger){
this.lambdaLogger = lambdaLogger;
}
public void logInfo(String caller, String message){
lambdaLogger.log(message);
}
}
and my test is
JavaScript
@RunWith(MockitoJUnitRunner.class)
public class LambdaLoggerWrapperTest{
@Mock LambdaLogger mockLambdaLogger;
@Test
public void testLog(){
LambdaLoggerWrapper llw = new LambdaLoggerWrapper(mockLambdaLogger);
//how to test that calling llw.logInfo actually calls lambdaLogger.log with appropriate string?
}
}
How would I test that calling llw.logInfo actually calls lambdaLogger.log with the appropriate string?
Advertisement
Answer
Invoke the logInfo()
method on the instance under test :
JavaScript
String message = "my message";
llw.logInfo("caller", message);
And use the Mockito#verify()
method to assert that the mock was invoked with the expected method and with the parameter you have passed to the tested method :
JavaScript
Mockito.verify(lambdaLogger).log(message);