序列化模拟抛出异常

Sou*_*abh 8 java unit-testing mockito gson

我正在尝试使用mockMvc和mockito来测试我的控制器.实际控制器主体如下:

Message createXYZ(@RequestBody XYZ inst){
   //creates XYZ
}
Run Code Online (Sandbox Code Playgroud)

现在通过请求体推送值,我通过序列化XYZ使用GsonBuilder创建一个JSON.这是XYZ类的结构:

class XYZ{

  List<Y> listofYs;
  //some other properties as well
}
Run Code Online (Sandbox Code Playgroud)

我正在为List listofYs创建和设置一个模拟器,当Gson尝试序列化一个XYZ实例时,它有一个模拟的listofYs它生成NPE.

有办法还是我完全错了?

小智 12

根据Mockito文档,您可以使模拟序列化:

List serializableMock = mock(List.class, withSettings().serializable());
Run Code Online (Sandbox Code Playgroud)


Ben*_*son 5

上述Stefan的答案类似,通过注释创建的模拟可以通过以下方式标记为可序列化:

@Mock(serializable = true)
List serializableMock;
Run Code Online (Sandbox Code Playgroud)