带构造函数参数的 Mockito 模拟

use*_*797 5 testing mockito

我正在使用mockito 1.9.5,并想测试我在github上发布的一个类。

问题是我需要模拟该getStringFromExternalSources方法。

我的班级代码

public class MyClass {

    String a,b,c;

    public MyClass(String a, String b, String c) {

        this.a = a;
        this.b =  b;
        this.c = c;
    }

    public String  executeLogic (String d) {

        return a + b + c + d;
    }

    public String getStringFromExternalSources (){
        return "i got it from some place else";
    }

}
Run Code Online (Sandbox Code Playgroud)

当前的测试

@RunWith(MockitoJUnitRunner.class)
public class MyClassTest {


    @Test
    public void MyClassTest() {

        MyClass mc = Mockito.spy(new MyClass("a","b","c") );

        Mockito.doReturn("mock").when(mc.executeLogic("real"));

        Mockito.doReturn("externalString").when(mc.getStringFromExternalSources());

        System.out.println(mc.executeLogic("real"));

    }

}
Run Code Online (Sandbox Code Playgroud)

有什么指点吗?

Dhe*_*rik 0

如何模拟getStringFromExternalSources方法:

public class MyClassTest {

    @Test
    public void MyClassTest() {

        MyClass mc = mock(MyClass.class);
        when(mc.executeLogic("real").thenReturn("mock");
        when(mc.getStringFromExternalSources().thenReturn("externalString");

        System.out.println(mc.executeLogic("real"));
    }

}
Run Code Online (Sandbox Code Playgroud)