MongoDB 模拟从返回 null
MongoDB mock returning null from
我 运行 使用 SpringRunner 测试用例并使用 MockBean 查找文档
我的测试用例如下代码 -
List<SomeClass> dummySomeClassList = Arrays.asList(new SomeClass("1", "example"), new SomeClass("2", "example2"));
@MockBean
private FindCollectionDocument findCollectionDocument;
当我使用以下内容时,它不是 returning 列表,而是它的 null
Mockito.when(findCollectionDocument.findCollection(Mockito.mock(SomeClass.class))).thenReturn(dummySomeClassList());
实际class有以下代码-
List<SomeClass> someClassList = findCollectionDocument.findCollection(someClassObject);
期望我的代码 return 在测试 class 中分配的 someClassList,但它没有 returning 任何东西并且是空白的。
如何在主 class 中获取 dummySomeClassList(来自测试 class)return?
您不应使用任何模拟作为 findCollection()
方法参数,而应使用 org.mockito.ArgumentMatchers
:
Mockito.when(findCollectionDocument.findCollection(any(SomeClass.class)))
.thenReturn(dummySomeClassList)
所以,在这一行中你说:当在我的模拟对象 findCollectionDocument
上调用带有任何类型 SomeClass
参数的 findCollection()
方法时,然后 return dummySomeClassList
.
在你的版本中你说:当在我的模拟对象 findCollectionDocument
上调用带有参数 Mockito.mock(SomeClass.class)
的 findCollection()
方法时,然后 return dummySomeClassList
。并且在测试期间,findCollection()
方法未使用此类参数调用,因此模拟非 void 方法的默认值为 returned,即 null
.
我的主要class有如下代码
Class ExampleA implements A{
private Map<String, Object> exMap;
@Override
pubic void doSomeThing1(){
// Method will set the exMap value
doSomeThing2(exMap.get(someClassObj))
}
@Override
pubic void doSomeThing2(SomeClass obj){
// Method will get and use exMap value for further processing
}
}
我正在为 doSomething2 编写 junit 测试用例,我正在尝试模拟从 doSomething1 获得的地图并在 doSomething2 中使用该地图
Mockito.when(exMap.get("sequenceInformation")).thenReturn((SomeClass)exMap.get("someClass"));
但它没有 return 任何东西,如何在我从 doSomething1 方法获得的 doSomething2 方法中模拟该映射?
我 运行 使用 SpringRunner 测试用例并使用 MockBean 查找文档
我的测试用例如下代码 -
List<SomeClass> dummySomeClassList = Arrays.asList(new SomeClass("1", "example"), new SomeClass("2", "example2"));
@MockBean
private FindCollectionDocument findCollectionDocument;
当我使用以下内容时,它不是 returning 列表,而是它的 null
Mockito.when(findCollectionDocument.findCollection(Mockito.mock(SomeClass.class))).thenReturn(dummySomeClassList());
实际class有以下代码-
List<SomeClass> someClassList = findCollectionDocument.findCollection(someClassObject);
期望我的代码 return 在测试 class 中分配的 someClassList,但它没有 returning 任何东西并且是空白的。 如何在主 class 中获取 dummySomeClassList(来自测试 class)return?
您不应使用任何模拟作为 findCollection()
方法参数,而应使用 org.mockito.ArgumentMatchers
:
Mockito.when(findCollectionDocument.findCollection(any(SomeClass.class)))
.thenReturn(dummySomeClassList)
所以,在这一行中你说:当在我的模拟对象 findCollectionDocument
上调用带有任何类型 SomeClass
参数的 findCollection()
方法时,然后 return dummySomeClassList
.
在你的版本中你说:当在我的模拟对象 findCollectionDocument
上调用带有参数 Mockito.mock(SomeClass.class)
的 findCollection()
方法时,然后 return dummySomeClassList
。并且在测试期间,findCollection()
方法未使用此类参数调用,因此模拟非 void 方法的默认值为 returned,即 null
.
我的主要class有如下代码
Class ExampleA implements A{
private Map<String, Object> exMap;
@Override
pubic void doSomeThing1(){
// Method will set the exMap value
doSomeThing2(exMap.get(someClassObj))
}
@Override
pubic void doSomeThing2(SomeClass obj){
// Method will get and use exMap value for further processing
}
}
我正在为 doSomething2 编写 junit 测试用例,我正在尝试模拟从 doSomething1 获得的地图并在 doSomething2 中使用该地图
Mockito.when(exMap.get("sequenceInformation")).thenReturn((SomeClass)exMap.get("someClass"));
但它没有 return 任何东西,如何在我从 doSomething1 方法获得的 doSomething2 方法中模拟该映射?