gpt4 book ai didi

testing - 带有构造函数参数的 Mockito 模拟

转载 作者:行者123 更新时间:2023-11-28 20:13:44 25 4
gpt4 key购买 nike

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

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

MyClass code :

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";
}

}

我的 current test :

@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"));

}

}

有什么指点吗?

最佳答案

您可以使用 when().thenReturn() 结构模拟任何方法。

Example:

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

when(mc.getStringFromExternalSource()).thenReturn("I got it from there!!");

因此,每当为模拟对象 mc 调用方法 'getStringFromExternalSource()' 时,它将返回 “我从那里得到它!”.

如果您想使用不同的参数测试类,那么您可以使用@Parameters 注释 结合参数化运行器向类提供参数,并在公共(public)静态方法中提及参数@Paramters 注释。一个粗略的例子是:

 @RunWith(Parameterized.class)
class SomeTestClass{

@Mock
SomeTestClass mSomeTestClassInstance;

@Parameters
public static Object provideParameters() {
Object[] objects = new Object[]{
0,
0,
2
};
return objects;
}
public SomeTestClass(Object argument1){
mArgument1 = argument1;
}

@Test
public void testSomeMethod{
Object returnValue = mSomeTestClassInstance.testSomeMethod(mArgument1);
assertequals(mArgument1,returnValue)
}
}

关于testing - 带有构造函数参数的 Mockito 模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49907732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com