Mockito:返回传递的参数
Mockito: returning the passed parameter
我有一个模拟对象:
HttpUriRequest request = Mockito.mock(HttpUriRequest.class);
我的代码调用
request.setHeader(key, value);
如何在调用getFirstHeader()
方法时mockreturnvalue
request.getFirstHeader(key).getValue();
其中 key
和预期的 return value
是来自 setHeader
调用的参数?
request.getFirstHeader(key)
returns 一个 Header
类型的对象,它有一个方法 getValue()
这是一个代码,我认为对您来说是一个很好的提示。
import org.junit.*;
import org.mockito.Mockito;
/**
* Created by soroosh on 1/26/15.
*/
public class MockitoTest {
@org.junit.Test
public void ttt(){
class HttpUriRequest{
public String getFirstHeader(){
return "Header";
}
}
HttpUriRequest request = Mockito.mock(HttpUriRequest.class);
Mockito.when(request.getFirstHeader()).thenReturn("yoohoo");
System.out.println(request.getFirstHeader());
}
}
如果代码无法帮助您,请告诉我
或者,您可能希望 'spy' 在真实对象上而不是模拟它。
HttpGet request = Mockito.spy(new HttpGet("/"));
request.setHeader(key, value);
Mockito.verify(request).getFirstHeader(key);
我找到了解决我自己问题的方法:
final MutableWrapper<String> stringWrapper = new MutableWrapper<>();
Mockito.doAnswer(new Answer<Void>() {
@Override
public Void answer(InvocationOnMock invocation) throws Throwable {
stringWrapper.wrap(invocation.getArgumentAt(1, String.class));
return null;
}
}).when(request).setHeader(Matchers.eq(HEADER), Matchers.anyString());
Mockito.doAnswer(new Answer<Header>() {
@Override
public Header answer(InvocationOnMock invocation) throws Throwable {
Header header = Mockito.mock(Header.class);
Mockito.when(header.getValue()).thenReturn(stringWrapper.unwrap());
return header;
}
}).when(request).getFirstHeader(Matchers.eq(HEADER));
return request;
}
我有一个模拟对象:
HttpUriRequest request = Mockito.mock(HttpUriRequest.class);
我的代码调用
request.setHeader(key, value);
如何在调用getFirstHeader()
方法时mockreturnvalue
request.getFirstHeader(key).getValue();
其中 key
和预期的 return value
是来自 setHeader
调用的参数?
request.getFirstHeader(key)
returns 一个 Header
类型的对象,它有一个方法 getValue()
这是一个代码,我认为对您来说是一个很好的提示。
import org.junit.*;
import org.mockito.Mockito;
/**
* Created by soroosh on 1/26/15.
*/
public class MockitoTest {
@org.junit.Test
public void ttt(){
class HttpUriRequest{
public String getFirstHeader(){
return "Header";
}
}
HttpUriRequest request = Mockito.mock(HttpUriRequest.class);
Mockito.when(request.getFirstHeader()).thenReturn("yoohoo");
System.out.println(request.getFirstHeader());
}
}
如果代码无法帮助您,请告诉我
或者,您可能希望 'spy' 在真实对象上而不是模拟它。
HttpGet request = Mockito.spy(new HttpGet("/"));
request.setHeader(key, value);
Mockito.verify(request).getFirstHeader(key);
我找到了解决我自己问题的方法:
final MutableWrapper<String> stringWrapper = new MutableWrapper<>();
Mockito.doAnswer(new Answer<Void>() {
@Override
public Void answer(InvocationOnMock invocation) throws Throwable {
stringWrapper.wrap(invocation.getArgumentAt(1, String.class));
return null;
}
}).when(request).setHeader(Matchers.eq(HEADER), Matchers.anyString());
Mockito.doAnswer(new Answer<Header>() {
@Override
public Header answer(InvocationOnMock invocation) throws Throwable {
Header header = Mockito.mock(Header.class);
Mockito.when(header.getValue()).thenReturn(stringWrapper.unwrap());
return header;
}
}).when(request).getFirstHeader(Matchers.eq(HEADER));
return request;
}