我有一个使用Optional的测试。在该方法中,它表明没有值存在。这是代码,我有。如何在没有NoSuchElementException的情况下进行此传递。
public jobs theID(Integer id) {
if( id == null) {
throw new IllegalArgumentException("Its missing.");
}
return jobTitleMapper.entityToModel(this.jobTitleRepository.findById(id).get());
}
Java 8中的get()令人费解。
在这种意义上,如何正确使用带有isPresent的Optional?
测试是:
public void findIdTest() {
Jobs jt = this.Service.theID(Entities.thisID);
Assert.assertNotNull(jt);
Assert.assertEquals(Entities.thisID, .getId());
}
感谢您的帮助。
答案 0 :(得分:0)
jobTitleRepository.findById(id)
它总是返回一个可选类,所以你不需要检查它是否为null,在你调用assertEquals()
之前,你可以通过调用{{1}来检查是否存在具有传递id的对象如果它是真的你可以做断言。但是你应该预测你的测试用例,以避免将编码状态与断言混合在一起。
答案 1 :(得分:0)
sendmail [myself for testing] <<-EOF
SUBJECT:New packages are available
[machine][directory] has new files for deployment.
EOF
答案 2 :(得分:0)
发生这种情况是因为Optional返回:
this.jobTitleRepository.findById(id)
可以返回一个empty
,因此,如果在其上调用get(),它将抛出一个java.util.NoSuchElementException
。
您可以使用以下方法解决此问题:
this.jobTitleRepository.findById(id).orElseGet(null)
要么
this.jobTitleRepository.findById(id).orElseGet(new Jobs())
或在原始方法中修复return Optional类型:jobTitleRepository.findById(id)
您也可以在帖子中发布此方法jobTitleRepository.findById(id)
吗?