这是我的测试类的片段。
class MyClassTest {
MyClass my;
HandlerA handlerA;
HandlerB handlerB
@BeforeTest
public void setUp() {
handlerA = mock(HandlerA.class);
handlerB = mock(HandlerB.class);
my = new MyClass(handlerA, handlerB);
}
@Test
public void testhandlerABuilderNegativeCase() {
Shapes s = getShapes();
Types t = my.buildTypes();
when(handlerA.handle(s, t)).thenReturn(Response.status(500).type(MediaType.APPLICATION_JSON).build());//ineffective.
Assert.assertFalse(my.handlerABuilder());
}
Shapes getShapes() {
//returns shapes;
}
}
这是我的主要课程。
public class MyClass {
MyClass(HandlerA handleA, HandlerB handleB) {
this.handleA= handleA;
this.handleB= handleB;
}
...
boolean handlerABuilder() {
Types t = buildTypes();
Shapes s = getShapes();
Response resp = handleA.handle(s,t);// resp is always null. despite using when to set
return (resp.getStatus==200); // throws NPE
}
Types buildTypes(){
//return types.
}
Shapes getShapes() {
//return shapes.
}
}
我得到NullPointerException
,因为when
似乎没有正确执行。因此,响应始终返回null。有关为什么会发生这种情况的任何想法?我也尝试过调试,但它似乎没什么帮助。
答案 0 :(得分:1)
为什么你关心传递给handle
的是什么?你无论如何都要嘲笑 的结果,所以没有理由担心传递任何特定的东西。
可能发生的事情是您将null
传递给它,并且没有得到很好的处理。
您可以做的是改变when
条件以匹配any
对象。
when(handlerA.handle(any(Shapes.class), any(Types.class)))
.thenReturn(Response.status(500).type(MediaType.APPLICATION_JSON).build());