当前位置: 代码迷 >> 综合 >> spock单元测试forEach循环中断言未生效
  详细解决方案

spock单元测试forEach循环中断言未生效

热度:28   发布时间:2024-02-12 13:35:55.0

问题描述:

直接给例子

def "分页查询订单列表"() {given:def queryParams = new OrderQry(pageIndex: 1, pageSize: 20, bizCode: BizCodeEnum.FINANCE, productType: ProductTypeEnum.MORTGAGE)when:def page = orderQueryService.pageOrder(queryParams)then:noExceptionThrown()page.getCurrentIndex() == 1page.getPageSize() == 20//forEach中的两个断言均未生效,期望测试fail结果却passpage.getItems().forEach({item -> item.getBizCode() == BizCodeEnum.Test.name(); item.getProductType() == ProductTypeEnum.Test.name() })}

问题解决:

forEach内需要显式地调用verifyAll(),上图中的例子

page.getItems().forEach({item -> item.getBizCode() == BizCodeEnum.Test.name(); item.getProductType() == ProductTypeEnum.Test.name() })

只需要修改为

page.getItems().forEach({ item ->verifyAll {item.getBizCode() == BizCodeEnum.Test.name();item.getProductType() == ProductTypeEnum.Test.name()}})