如何测试作为参数传递给另一个方法中的方法的值(Java单元测试)?

如何测试作为参数传递给另一个方法中的方法的值(Java单元测试)?,java,unit-testing,mockito,Java,Unit Testing,Mockito,例如: public class myClass { private WebService webService; public void process(String delimitedString) { String[] values = StringUtils.split(delimitedString, "$%"); insideMethod.setFirstName(values[0]); insideMethod.setMiddleName(values[1

例如:

public class myClass {
private WebService webService;
public void process(String delimitedString) {
    String[] values = StringUtils.split(delimitedString, "$%");

    insideMethod.setFirstName(values[0]);
    insideMethod.setMiddleName(values[1]);
    insideMethod.setLastName(values[2]);
    insideMethod.setBirthDate(values[3]);

    webService.getResponseWS(insideMethod.getFirstName,
                             insideMethod.getMiddleName, 
                             insideMethod.getLastName, 
                             insideMethod.getBirthDate);
}
}
我想测试
insideMethod
中是否设置了正确的值,以确保将正确的参数传递给
webService.getResponseWS()
这是用Java编写的,我应该使用单元测试和Mokito

注意:我不是在测试
webService
方法。我需要测试传递给
insideMethod
的值是否正确。示例“John”表示名称,而不是“JohnSm”或“John$%”

到目前为止,我已经创建了一个测试类,实例化了正在测试的类,并模拟了webService类

public class TestClass {
        MyClass myClass = new MyClass();
        private WebService webService = mock(WebService.class);
  public void processTest() {
  when(webService.getResponseWS()).thenCallRealMethod();
    insideMethod.process("John$%J$%Smith$%02-02-1990");
你想用


JavadocAOR列出了许多示例

如果您已经正确地设置了Mockito并注入了mock,那么以下应该可以工作(尽管我手头没有编译器或JVM可供检查)


您可以在setter和调用webservices之间放置一些
assert
语句,并删除
when()
调用。您特别不希望它调用真正的方法。
verify(webService).getResponseWS("John", "J", "Smith", "02-02-1990");
import static org.mockito.Mockito.verify;

@RunWith(MockitoJUnitRunner.class)
public class TestClass {

    @Mock
    private WebService webService; 

    private MyClass myClass = new MyClass();

    @Test
    public void processTest() {
        // inject webService mocked instance into myClass instance, either with a setter
        myClass.setWebService(webService);
        // or using Mockito's reflection utils if no setter is available
        //Whitebox.setInternalState(myClass, "webService", webService);

        // call the method to be tested
        String input = "input"; // whatever your input should be for the test
        myClass.process(input);

        // verify webService behavior
        verify(webService).getResponseWs(
                "expectedInput1", "expectedInput2", "expectedInput3", "expectedInput4");
    }

}