我正在为ObjectMapper().writeValueAsString(object)
编写单元测试。
我有一个捕获IOException的catch块。
我需要对该捕获块进行单元测试。
在这种情况下,我需要知道IOException
返回了ObjectMapper
。
要抛出JsonProcessingException,我已经找到了answer
但是我没有发现任何引发IOException的情况。
protected void logJsonForMetrics(final Logger logger,
final Object object)
{
try
{
final String jsonString = new ObjectMapper().writeValueAsString(object);
logger.info(jsonString);
}
catch (final JsonProcessingException e)
{
LOGGER.error("Unable to create a json object" + e);
}
catch (final IOExcepton e)
{
LOGGER.error("Error while logging metric " + e);
}
}
我想要一个返回IOException的方案。
答案 0 :(得分:0)
此writeValueAsString()
很可能不会抛出IOException
,因为它在内部使用StringWriter
来写入值。来自documentation:
[...]在功能上等同于用
writeValue(Writer,Object)
调用StringWriter
并构造字符串[...]
如果要检查IOException
,则需要使用writeValue()
方法,并提供一个Writer
对象,该对象将抛出IOException
。
请记住,从2.1版开始,IOException
中的writeValueAsString()
“ throws”语句已被删除(很可能是因为不再抛出该异常)。
答案 1 :(得分:0)
注意:在2.1版的jackson-databind之前,symbol_list = ['MIC']
for x in range(0, len(data)):
if data[x]['symbol'] in symbol_list:
response = requests.get(base_url + data[x]['link'], headers=headers)
soup = bs4.BeautifulSoup(response.text, 'html.parser')
try:
# Announcement is 6th element of class t1.
announce = soup.find_all(class_='t1')[5].get_text()
print("Announcement: ", announce)
except:
print("Announcement not found")
try:
pdf_file = base_url + soup.find_all('a', href=True)[0]['href']
print("File_Link: ", pdf_file)
except:
print('PDF not found')
个方法throws子句包含IOException; 2.1将其删除。