当前位置: 首页 > 知识库问答 >
问题:

Groovy spock测试不正确--接收空

金英华
2023-03-14

出于某种原因(我不是很好与Spock和新的嘲笑和攻击),我不能得到一个特定的方法来存根与我想要的。

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

类别:版本

class Edition {
    //some strings, ints, and booleans -- information about the edition
}

class:用于获取单个作品的附加版本的EditionResults

class EditionResults {
    List<Edition> editionsList
    String parentWorkId
}
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)
    }
}

特别是,我在测试editions的真分支时遇到了困难?.editionslist--出于某种原因,我一直收到editionsnull

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***

我的理解是,editionsservice.searcheditions(SINGULAR_WORK_ID)>>editionResults相当于说“当我们点击这个searcheditions方法时,使其结果editionResults”--我们已经填充了它....那么它是如何为空的呢?

我已经试着尽可能详细和干净地回答这个问题,为了简洁而简化,但如果需要任何额外的信息,请让我知道--当然,提前感谢。

同样值得注意的是,它实际上在我的本地工作,一切都正确地回来了--只是这个三叶草的报道让我

共有1个答案

刘令
2023-03-14

感谢@tim_yates

editionsservice.searcheditions(SINGULAR_WORK_ID)>>editionResults应该在我的then块中

 类似资料:
  • 我有简单的测试 为什么maven和intellij不能执行Junit5测试?这方面的工作是什么?surefire版本应该已经支持JUnit5测试。

  • 我在学习测试。但是我发现在TestNG6.8中,注释测试后有问题。 它来自http://testng.org/doc/documentation-main.html。 但实际上,我的测试用例还没有启动,@AfterTest已执行!为什么?像这样输出。

  • 我的问题是,我在java iso客户端和测试服务器之间有ssl连接。连接正常,握手没有问题,但服务器接收到不正确的数据。 正如我在日志服务器中看到的,在一次读取操作期间只接收部分数据,并且输入流中也存在一些奇怪的数据-可能与证书信息有关。 请注意,如果没有ssl,此客户端和服务器工作时不会出现任何问题。而且,当我用java keyTool简单地创建jks标准证书时,一切都正常,问题也不会发生。 但

  • 安装程序:我有一个扩展IRetryAnalyzer的类,并实现了一个简单的重试逻辑,覆盖了以下方法:public boolean retry(ITestResult result){ 提前道谢。

  • 主要内容:验收测试背后的原因,执行验收测试的步骤,验收测试中使用的工具,验收测试的优点,验收测试的缺点验收测试是基于用户要求和功能处理的正式测试。它确定软件是否符合指定的要求和用户要求。它是作为一种黑盒测试进行的,其中涉及测试系统接受程度所需的用户数量。这是软件测试的第四级和最后一级。 但是,该软件已通过三个测试级别(单元测试,集成测试,系统测试)但仍有一些小错误,当最终用户在实际场景中使用系统时,可以识别这些错误。 验收测试是对先前完成的所有测试过程的挤压。 验收测试背后的原因 当软件经历了单