Groovy 如何进行模拟报税';假';对于';可选。isPresent()';?

Groovy 如何进行模拟报税';假';对于';可选。isPresent()';?,groovy,spock,Groovy,Spock,我想模拟下面返回OptionalData的语句。我想模拟该数据,使可选.isPresent()返回false private静态可选用户列表可选 私有静态SharedList SharedList sharedList=sharedList.builder() .sharedListId(2000升) .协作者列表(协作者列表) .build() userListOptional=Optional.of( UserList.builder() .userListId(1234) .userId(

我想模拟下面返回
OptionalData
的语句。我想模拟该数据,使
可选.isPresent()
返回
false

private静态可选用户列表可选
私有静态SharedList SharedList
sharedList=sharedList.builder()
.sharedListId(2000升)
.协作者列表(协作者列表)
.build()
userListOptional=Optional.of(
UserList.builder()
.userListId(1234)
.userId(607042)
.activeFlag(真)
.用户名(“美国”)
.sharedList(sharedList)
.build()
)
userListRepository.FindByUserAndSharedListandActivityFlagTrue(*\u)>>userListOptional
我的测试代码是:

Optional userListOptional=userListRepository
.findbyuseridandSharedListandActivityFlagTrue(user.getUserId(),sharedList);

如果您只想为
isPresent()
返回一个
可选的
false
,您根本不需要模拟可选的,只需要创建一个空的

假设我们有这些简化的应用程序类:

package de.scrum_master.stackoverflow.q62709855;
公共类用户列表{
私有字符串名称;
公共用户列表(字符串名称){
this.name=名称;
}
}
package de.scrum_master.stackoverflow.q62709855;
导入java.util.Optional;
公共类UserListRepository{
公共可选FindByUserAndSharedListandActivityFlagTrue(int userId){
返回可选的.of(新用户列表(“管理员”);
}
}
然后,您的Spock规范可以如下所示:

package de.scrum_master.stackoverflow.q62709855
导入spock.lang.Specification
类UserListRepositoryTest扩展了规范{
def测试(){
鉴于:
可选userListOptional=Optional.empty()
UserListRepository UserListRepository=Mock(){
FindByUserAndSharedListandActivityFlagTrue(*\u)>>userListOptional
}
期望:
!userListRepository.FindByUserAndSharedListandActivityFlagTrue(123).isPresent()
}
}

当然,这个测试只测试mock对象是否实际返回stubbed返回值,但是您知道了。我希望这是您想知道的,因为您的问题本身和您发布的代码片段都不够清楚,无法传达您的意图。

欢迎您这样做。请给你自己的问题更多的爱。我添加了语法突出显示,并重新格式化了代码,使其更具可读性。此外,请使用一个吸引人的主题行,而不是把整个问题放在多行。完整的问题属于正文。你的问题也有点难理解,所以请注意了解什么是a。问MCVE式的问题会大大提高你获得有用答案的机会。否则:垃圾进入→ 把垃圾扔出去。