- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在学习 mockito,我从 link 中了解了上述函数的基本用法。 .
但是我想知道它是否可以用于任何其他情况?
最佳答案
doThrow :主要用于在模拟对象中调用方法时抛出异常。
public void validateEntity(final Object object){}
Mockito.doThrow(IllegalArgumentException.class)
.when(validationService).validateEntity(Matchers.any(AnyObjectClass.class));
doReturn : 当你想在方法执行时返回一个返回值时使用。
public Socket getCosmosSocket() throws IOException {}
Mockito.doReturn(cosmosSocket).when(cosmosServiceImpl).getCosmosSocket();
doAnswer:有时您需要对传递给方法的参数执行一些操作,例如,添加一些值、进行一些计算甚至修改它们 doAnswer 给您答案 在调用该方法时正在执行的接口(interface),此接口(interface)允许您通过 InvocationOnMock 参数与参数进行交互。另外,answer 方法的返回值将是 mocked 方法的返回值。
public ReturnValueObject quickChange(Object1 object);
Mockito.doAnswer(new Answer<ReturnValueObject>() {
@Override
public ReturnValueObject answer(final InvocationOnMock invocation) throws Throwable {
final Object1 originalArgument = (invocation.getArguments())[0];
final ReturnValueObject returnedValue = new ReturnValueObject();
returnedValue.setCost(new Cost());
return returnedValue ;
}
}).when(priceChangeRequestService).quickCharge(Matchers.any(Object1.class));
doNothing:(来自 documentation )使用 doNothing() 将 void 方法设置为不执行任何操作。请注意,模拟上的 void 方法默认情况下什么都不做!但是,doNothing() 派上用场的情况很少见:
对 void 方法的连续调用 stub :
doNothing().
doThrow(new RuntimeException())
.when(mock).someVoidMethod();
//does nothing the first time:
mock.someVoidMethod();
//throws RuntimeException the next time:
mock.someVoidMethod();
当你窥探真实的对象并且你想让 void 方法什么都不做时:
List list = new LinkedList();
List spy = spy(list);
//let's make clear() do nothing
doNothing().when(spy).clear();
spy.add("one");
//clear() does nothing, so the list still contains "one"
spy.clear();
关于java - doThrow() doAnswer() doNothing() 和 doReturn() 在 mockito 中的用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28836778/
我有以下测试用例: ClassPathResource resource = new ClassPathResource(...); doReturn(resource.getInputStream(
我无法让 Mockito 覆盖我正在测试的类中的方法。 @Test public void test_classToTest() throws Exception { DependencyA
好吧,我显然不太明白 doReturn(...).when(...) 和 when(...).thenReturn(...) 之间的区别。 问题是,当我上课时,我用 @Mock 注释模拟,并在我想测试
我有这个工作正常的代码。 public class MyClass implements Serializable { ... private UploadedFile uploadedFile;
我想运行一个方法,即使在@Before我设置了 doReturn(mockResult).when(spyObject).getResult(); 对于我的所有其他测试方法来说这样做是有意义的,但我现
如果我有一个对象 MyObject,我想在调用该对象的某些方法时返回一些值。例如这样的事情: doReturn(someValue).when(Mockito.any(MyObject.class))
这是我正在测试的类(class): public class A { public Integer callMethod(){ return someMethod(); } private Int
我正在尝试对以下方法进行单元测试: Class TestClass { public List test(String a, String b, String c, String d) thr
我做了很多 Mockito spy ,只是在一个新项目中模仿我自己的工作示例。但这惨遭失败 import org.apache.http.HttpEntity; import org.apache.h
当我尝试模拟方法时,收到 UnfinishedStubbingException 。我试图让 doReturn 返回实现特定接口(interface)的类的模拟实例。该接口(interface)是被模
我是 Mockito 新手。我知道 spy 对象永远不会调用 doReturn 的原始方法,但在我的代码中,这没有发生 import static org.junit.Assert.assertTru
我有一个单例类来帮助我从控制台读取输入: public class IOHelper { public org.slf4j.Logger logger = Logger.logger;
我正在尝试通过 doReturn 方法使用 Mockito 深度 stub 功能。 当我在深度 stub 示例中使用 when 方法时,它工作正常: Foo mock = mock(Foo.class
我正在为 SOAP API 编写单元测试,我需要在其中模拟某个方法的响应,但该方法一直被调用。 我的单元测试的(相关)代码如下: import org.mockito.Matchers; import
我有一个 junit 测试,其中我在类中模拟了一个对象。让我们用名为 mocker 的 MyManager 的 @Mock 调用类 Mocker。 示例类: public class Mocker {
当我不能使用 Mockito.when() 时,如何使用 PowerMockito 中的 doReturn 模式来模拟静态方法? 我想测试以下静态方法: public static PrintWrit
我正在测试一些遗留代码并尝试模拟父类(super class)中的某些行为。奇怪的是,mockito 不会触发并返回我期望的值,在某些情况下,它甚至在 doReturn 行上抛出 Nullpointe
我有一个方法调用,需要在第一次调用时返回 valueA,在第二次调用时返回 valueB。我正在使用 PowerMockito spy ,所以如果我只需要返回一个值,它看起来像这样: PowerMoc
我要测试的类: import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; imp
我是 PowerMockito 的新手,它显示的行为我不明白。以下代码解释了我的问题: public class ClassOfInterest { private Object methodIW
我是一名优秀的程序员,十分优秀!