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

Spock&Spring Boot集成测试

戎亦
2023-03-14
@RestController("/words")
public class WordsController {

   @RequestMapping(method = RequestMethod.GET)
   @ResponseBody
   public ResponseEntity getAllWords() {
      return ResponseEntity
         .status(HttpStatus.OK)
         .contentType(MediaType.APPLICATION_JSON)
         .body("Your list of words go here");
   }
}
@ContextConfiguration(classes = MyApplication.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
@ActiveProfiles("test")
class WordsControllerTest extends Specification {
RESTClient restClient = new RESTClient("http://localhost:3000", ContentType.JSON)

    def "test the GET endpoint is available"() {
        when:
        def response = restClient.get(
                path: '/words',
                requestContentType: JSON
        )

        then:
        response.status == 200
    }

下面是我的应用程序主类:

@SpringBootApplication
public class MyApplication {

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }

}

但当我运行这个程序时,我得到了一个非常奇怪的错误:

groovyx.net.http.restclient:解析'application/json'响应时出错

compile('org.springframework.boot:spring-boot-starter-data-jpa')
compile('org.springframework.boot:spring-boot-devtools')
compile("org.springframework.boot:spring-boot-starter-web:${springBootVersion}")
runtime('com.h2database:h2')
compile group: 'org.codehaus.groovy.modules.http-builder', name: 'http-builder', version: '0.7.1'
testCompile('org.springframework.boot:spring-boot-starter-test')
testCompile('org.spockframework:spock-core:1.1-groovy-2.4-rc-2')
testCompile('org.spockframework:spock-spring:1.1-groovy-2.4-rc-2')
testCompile "org.hamcrest:hamcrest-core:1.2"

共有1个答案

鞠嘉志
2023-03-14

将您的endpoint标记为返回application/json媒体类型是不够的。您还需要返回有效的JSON内容,该内容:

"Your list of words go here"

不是。

如果需要返回列表,请写:

return ResponseEntity
   .status(HttpStatus.OK)
   .contentType(MediaType.APPLICATION_JSON)
   .body("{\"words\": [\"one\", \"two\"]}");
return ResponseEntity
   .status(HttpStatus.OK)
   .contentType(MediaType.APPLICATION_JSON)
   .body("{\"msg\": \"content\"");
 类似资料:
  • 在我的应用程序中有,它有一个操作,如下所示: 现在,我正在测试视图和模型,如下所示: 但是我的测试用例失败了,stacktrace如下: 正在运行2个spock测试。。。第1页,共2页 有什么问题吗。

  • 问题内容: 我使用spock编写测试用例,使用jenkins运行和发布我的测试用例。我能够得到报告的代码覆盖率,但是声纳 仅 向我显示 Java 单元测试用例;在 常规测试案例是完全缺失 以下pom.xml用作参考 https://github.com/kkapelon/java-testing-with- spock/blob/master/chapter7/spring-standalone-

  • 完成了818个集成测试,0在104001ms运行1个spock测试时失败...失败:CreditServiceSpec groovy.lang.groovyRuntimeException:未能调用构造函数:public org.codehaus.groovy.grails.test.support.grailstestautoWirer(org.springframework.context.a

  • 使用Spock运行集成测试(例如)的最佳方式是什么?我想引导整个Spring Boot应用程序,并执行一些HTTP调用来测试整个功能。 我可以用JUnit(首先运行应用程序,然后执行测试): 但是有了Spock,应用程序就不会启动了: