Testing Groovy-spock测试是';t存根正确--接收空值

Testing Groovy-spock测试是';t存根正确--接收空值,testing,groovy,mocking,spock,stubbing,Testing,Groovy,Mocking,Spock,Stubbing,出于某种原因(我对斯波克不是很在行,而且我对模仿和存根还不熟悉),我无法找到一种特定的方法来存根我想要的东西 我把内容缩短了一点,但基本上我有一个从搜索中返回的书籍列表。每本书都有一个工作ID。这本书可能有较旧或较新的版本,但它们都有相同的工作ID——如果用户选择,他们可以获取所有其他版本 前言 类别:版本 class Edition { //some strings, ints, and booleans -- information about the edition } 类:E

出于某种原因(我对斯波克不是很在行,而且我对模仿和存根还不熟悉),我无法找到一种特定的方法来存根我想要的东西

我把内容缩短了一点,但基本上我有一个从搜索中返回的书籍列表。每本书都有一个
工作ID
。这本书可能有较旧或较新的版本,但它们都有相同的
工作ID
——如果用户选择,他们可以获取所有其他版本

前言
类别:版本

class Edition {
    //some strings, ints, and booleans -- information about the edition
}
类:EditionResults用于获取单个作品的附加版本

class EditionResults {
    List<Edition> editionsList
    String parentWorkId
}
我的问题是这一部分: 我不明白为什么我一直(从我的记录器)取回这个

我的理解是,
editionsService.searchEditions(单数工作ID)>>editionResults
相当于说“当我们点击这个
searchEditions
方法时,生成它的结果
editionResults
”——我们已经填充过了那么它如何为空?


我已经尝试过尽可能详细和简洁地回答这个问题,为了简洁起见,请让我知道是否需要任何其他信息——当然,提前谢谢

同样值得注意的是,它实际上在我的本地电脑上运行,而且一切都恢复正常——正是由于@tim_yates,三叶草的报道让我受益匪浅


editionservice.searchEditions(单数工作ID)>>editionResults
应该在我的
中,然后

如果你把那行移到
中,那么:
块?@tim\u yates我觉得自己像个白痴:)非常感谢!不要,这至少会让每个人注意到两次你或@tim_yates想“回答”这个问题吗?这样就不会被贴上“未回答”的标签,并让有类似问题的人看得更清楚了
class BulkEditions {
    List<EditionResults> bulkEditions
}
@RequestMapping('/api')
class EditionsController {

    @Autowired
    private EditionsService editionsService
    private Logger logger = LoggerFactory.getLogger(EditionsController)

    @RequestMapping(value = '/bulkeditions', produces = 'application/json')
    ResponseEntity<BulkEditions> getBulkEditions(
        @RequestParam(value = 'workIds') Set<String> workIds
    ) throws Exception
    {
        BulkEditions newBulkEditions = new BulkEditions(bulkEditions: [])
        workIds.each { workId ->
            EditionResults editions = editionsService.searchEditions(workId)
            logger.info "EditionResults {}", editions
            if (editions?.editionsList) {
                newBulkEditions.bulkEditions << editions
            }
        }
        new ResponseEntity<BulkEditions>(newBulkEditions, HttpStatus.OK)
    }
}
class EditionsControllerSpec extends Specification {

    private final EditionsService editionsService = Mock(EditionsService)
    private static final Set<String> WORK_ID_SET = '12345' as Set<String>
    private static final String SINGULAR_WORK_ID = '12345'

    @Subject
    private final EditionsController controller = new EditionsController(editionsService: editionsService)

    void 'test get bulk editions'() {
        given:
        EditionResults editionResults = Mock(EditionResults)
        Edition edition = GroovyMock(Edition) //it's a java class
        edition.isAvailable >> true
        //edition.bunchOfOtherProps >> randomValues

        editionResults.editionsList >> [edition]
        editionResults.parentWorkId >> SINGULAR_WORK_ID
    
        editionsService.searchEditions(SINGULAR_WORK_ID) >> editionResults

        when:
        ResponseEntity<BulkLocalEditions> response = controller.getBulkEditions(WORK_ID_SET)

        then:
        response
    }


editionsService.searchEditions(SINGULAR_WORK_ID) >> editionResults
[Test worker] INFO [EditionsController:100] [doCall] EditionResults ***null***