使用MockRestServiceServer时为什么需要调用mockServer.verify?
MockRestServiceServer的默认校验和verify()的作用完全互补,覆盖的是两类不同的错误场景:
- 你提到的
no further requests expected: HTTP错误,仅能捕获实际发送的请求超出预期的情况:比如发了没定义的URL、请求方法不对、参数不对这类「多出来/错的请求」问题。 mockServer.verify()解决的是预期该发的请求没发的问题:如果你的业务逻辑有漏洞,本该发起的外部请求根本没执行,这时候没有多余请求触发默认的拦截报错,测试会直接判定为通过,完全感知不到逻辑异常。
就拿你给出的测试代码举例:你定义了最少要调用1次https://www.google.com的GET接口,要是serviceUnderMock.doSomething()的内部逻辑出了问题,压根没有触发这个调用,没有加verify()的情况下,整个测试不会报任何错误,直接通过,完全达不到你验证业务逻辑的目的。加了mockServer.verify()之后,框架会逐一核对所有你定义的预期请求的调用次数是否符合要求,检测到预期请求未达标就会抛出断言错误,直接让测试失败,帮你定位问题。
另外如果你每个测试方法都会重新构建MockRestServiceServer实例,建议把verify()调用放在@AfterMethod里统一执行,不需要每个测试方法重复写。
内容的提问来源于stack exchange,提问作者Ori Marko
相关产品推荐
相关产品推荐

