使用特定字符串调用的测试方法



我试图找到问题的答案,但找不到工作的东西。我有一个这样做的类

public class LambdaLoggerWrapper {
    public LambdaLoggerWrapper(LambdaLogger lambdaLogger){
        this.lambdaLogger = lambdaLogger;
    }
    public void logInfo(String caller, String message){
        lambdaLogger.log(message);
    }
}

我的测试是

@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?
    }
}

我将如何测试调用llw.logInfo实际上使用适当的字符串调用lambdaLogger.log?

在被测试实例上调用 logInfo() 方法:

String message = "my message";
llw.logInfo("caller", message);

并使用 Mockito#verify() 方法断言模拟是使用预期方法和您传递给测试方法的参数调用的:

Mockito.verify(lambdaLogger).log(message);
final ArgumentCaptor<String> argumentCaptor = ArgumentCaptor.forClass(String.class);
doAnswer(invocationOnMock -> {
     assertEquals("yourexpectedValue", argumentCaptor.getValue());
     return ;// return an instance of whatever type LambdaLogger::log method returns
}).when(mockLambdaLogger).log(argumentCaptor.capture());
llw.logInfo("caller", "yourexpectedValue");  

如果您不使用 Java8,请将其替换为匿名内部类。

相关内容

  • 没有找到相关文章

最新更新