小编Mru*_*ukh的帖子

在没有子类化抽象类的情况下模拟对抽象类的公共方法的调用,优先使用mockito

我正在编写一个使用JUNIT + Mockito测试方法的单元测试:

public someObject methodUnderTest(){
  SomeObject obj = SomeAbstractClass.someMethod();

  if(obj!=null){
    obj.someOtherMethod();
  }

  return someThing;
}
Run Code Online (Sandbox Code Playgroud)

我想模拟abstract Class "SomeAbstractClass"上面代码片段中提到的调用,所以我可以验证对"obj"的调用,如:

verify(SomeAbstractClass).someMethod();
verify(obj).someOtherMethod();
Run Code Online (Sandbox Code Playgroud)

我尝试过使用mockito功能,例如:Mockito.CALLS_REAL_METHODS Mockito.RETURNS_MOCKS

但由于SomeAbstractClass不可用的依赖项,它们不起作用.

注意:

1)SomeObject是一个接口.

2)我需要一种技术来测试上面的代码片段.我被限制使用上面的代码片段,不能更改代码片段.

java junit unit-testing mocking mockito

6
推荐指数
1
解决办法
1万
查看次数

Jackson Scala JSON反序列化到案例类

我有一个JSON,其形式如下:

{
"inventory": [
           {
        "productType": "someProduct1",
        "details": {
            "productId": "Some_id",
            "description": "some description"
        }
        },
 {
        "productType": "someProduct2",
        "details": {
            "productId": "Some_id",
            "description":{"someKey":"somevalue"}
        }
    }
]
}
Run Code Online (Sandbox Code Playgroud)

我希望上面的json反序列化的case类如下所示:

case class Inventory(products:List[Product])
case class Product(productType:String,details:ProductDetails)
abstract class ProductDetails
case class ProductDetailsSimple(productId:String,description:String) extends ProductDetails
case class ProductDetailsComplex(productId:String,description:Map[String,String]) extends ProductDetails
Run Code Online (Sandbox Code Playgroud)

我使用jackson-scala模块反序列化上面的JSON字符串,如下所示:

 val mapper = new ObjectMapper() with ScalaObjectMapper
 mapper.registerModule(DefaultScalaModule)
 mapper.readValue(jsonBody, classOf[Inventory])
Run Code Online (Sandbox Code Playgroud)

我得到的错误如下:"意外令牌(END_OBJECT),期望FIELD_NAME:缺少属性'@details',包含类型ID(对于类ProductDetails)\n在[来源:java.io.StringReader@12dfbabd;行:9,专栏:5]"

我已经通过关于多态反序列化的杰克逊文档,并尝试了所提到的组合,但没有运气.我想了解我在这里做错了什么,需要使用jackson模块对反序列化进行修正.

json scala jackson deserialization

4
推荐指数
1
解决办法
8268
查看次数

标签 统计

deserialization ×1

jackson ×1

java ×1

json ×1

junit ×1

mocking ×1

mockito ×1

scala ×1

unit-testing ×1