小编And*_*age的帖子

Mockito:以复杂对象作为参数的Stub方法

也许这是一个新手问题,但找不到答案.

我需要使用Mockito存根方法.如果方法有"简单"参数,那么我就可以做到.例如,一个包含两个参数的车辆颜色和门数的查找方法:

 when(carFinderMock.find(eq(Color.RED),anyInt())).thenReturn(Car1);
 when(carFinderMock.find(eq(Color.BLUE),anyInt())).thenReturn(Car2);
 when(carFinderMock.find(eq(Color.GREEN), eq(5))).thenReturn(Car3);
Run Code Online (Sandbox Code Playgroud)

问题是find参数是一个复杂的对象.

 mappingFilter = new MappingFilter();
 mappingFilter.setColor(eq(Color.RED));
 mappingFilter.setDoorNumber(anyInt());
 when(carFinderMock.find(mappingFilter)).thenReturn(Car1);
Run Code Online (Sandbox Code Playgroud)

此代码不起作用.错误是"无效使用参数匹配器!1匹配器预期,2记录".

无法修改"find"方法,它需要是MappingFilter参数.

我想我必须做"某事"来表示Mockito,当mappingFilter.getColor为RED,而mappingFilter.getDoorNumber为any时,则必须返回Car1(对于其他两个句子也是如此).但是怎么样?

java parameters stub mockito

9
推荐指数
2
解决办法
9703
查看次数

JAXB:缺少命名空间

我正在尝试从通过 JAXB 生成的类序列化 XML。

班上:

package ws.avail;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "pos",
    "uniqueID",
    "availStatusMessages"
})
@XmlRootElement(name = "OTA_HotelAvailNotifRQ")
public class OTAHotelAvailNotifRQ {
 ...
}
Run Code Online (Sandbox Code Playgroud)

文件“package-info.java”:

@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.opentravel.org/OTA/2003/05", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package ws.avail;
Run Code Online (Sandbox Code Playgroud)

编组器(简化后没有错误处理):

context = JAXBContext.newInstance(rootElement.getClass());
Marshaller marshaller = context.createMarshaller();
marshaller.marshal(rootElement, stringWriter);
return stringWriter.toString();
Run Code Online (Sandbox Code Playgroud)

此代码生成:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>  
<OTA_HotelAvailNotifRQ Version="1.000" Target="TEST">  
....
Run Code Online (Sandbox Code Playgroud)

我期望这样的事情:

<?xml version="1.0" encoding="UTF-8"?>  
<OTA_HotelAvailNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.000" Target="TEST">  
....
Run Code Online (Sandbox Code Playgroud)

我有一个类似的代码并且工作正常,但我无法理解为什么此代码不显示名称空间。有什么线索吗?谢谢!

java xml namespaces jaxb

5
推荐指数
1
解决办法
4435
查看次数

标签 统计

java ×2

jaxb ×1

mockito ×1

namespaces ×1

parameters ×1

stub ×1

xml ×1