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

WebApplicationContext在Spock规范中注入时不会自动连线

慕宏博
2023-03-14

尽管我遵循了Spring Boot指南,但在尝试时:

@SpringApplicationConfiguration(classes=MainWebApplication.class, initializers = ConfigFileApplicationContextInitializer.class)
@WebAppConfiguration
@ActiveProfiles("integration-test")

class FirstSpec extends Specification{
  @Autowired
  WebApplicationContext webApplicationContext

  @Shared
  MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build()

  def "Root returns 200 - OK"(){

      when:
      response = mockMvc.perform(get("/"))

      then:
      response.andExpect(status().isOk())
  }
}

我只是得到一个信息,WebApplicationContext只是没有被注入。我确实有

    <dependency>
        <groupId>org.spockframework</groupId>
        <artifactId>spock-spring</artifactId>
    </dependency>
    <dependency>
        <groupId>org.spockframework</groupId>
        <artifactId>spock-maven</artifactId>
        <version>0.7-groovy-2.0</version>
    </dependency>

在我的生活中。同样,正如指南所建议的,pom仍然没有成功。我遗漏了什么?我需要应用程序上下文,以便注入所有bean。有什么想法吗?

共有2个答案

龚奕
2023-03-14

您还可以使用Spock 1.2:https://objectpartners.com/2018/06/14/spock-1-2-annotations-for-spring-integration-testing/中提供的SpringBean注释

这可能会更容易:

@SpringApplicationConfiguration(classes=MainWebApplication.class, initializers = ConfigFileApplicationContextInitializer.class)
@WebMvcTest
@AutoConfigureMockMvc
@WebAppConfiguration
@ActiveProfiles("integration-test")

class FirstSpec extends Specification{
  @Autowired
  WebApplicationContext webApplicationContext

  @Autowired
  MockMvc mockMvc

  // if any service to mock
  @SpringBean
  MyService myService

  def "Root returns 200 - OK"(){

      when:
      response = mockMvc.perform(get("/"))

      then:
      response.andExpect(status().isOk())
  }
}

如果你不想嘲笑你的服务,你可以直接使用@SpringBootTest,它只用一个注释做同样的工作

@SpringBootTest(webEnvironment = RANDOM_PORT)
@ActiveProfiles("integration-test")

class FirstSpec extends Specification{
  @Autowired
  WebApplicationContext webApplicationContext

  @Autowired
  MockMvc mockMvc

  // if any service to mock
  @SpringBean
  MyService myService

  def "Root returns 200 - OK"(){

      when:
      response = mockMvc.perform(get("/"))

      then:
      response.andExpect(status().isOk())
  }
}
巴照
2023-03-14

您可以尝试将mockMvc构造移动到setup方法吗?

def setup() {
    mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build()
}
 类似资料:
  • 和和注释之间有什么区别? 我们应该在什么时候使用它们每一个?

  • 我目前正在着手一个将spring数据与JPA/Hibernate结合使用的项目。现在,我正在使用@Autowired注释在相关属性上注入JpaRepositories,例如: ...在这里,我员工道是一个扩展JpaRepository的接口,注释为@Repository: 使用这种方法一切都很好——然而,我相当习惯于用XML完成我的大部分Spring配置工作,因为我个人喜欢所有相关配置都在同一个地

  • 注意:本文档已失效,请浏览 Istio 官方文档。本书中的 Service Mesh 章节已不再维护,请转到 istio-handbook 中浏览。 我们知道 Istio 通过向 Pod 中注入一个 sidecar 容器来将 Pod 纳入到 Istio service mesh 中的,那么这些 sidecar 容器的注入遵循什么样的规范,需要给每个 Pod 增加哪些配置信息才能纳入 Istio s

  • 1. 概述 本 PSR 是关于由文件路径 自动载入 对应类的相关规范, 本规范是可互操作的,可以作为任一自动载入规范的补充,其中包括 PSR-0,此外, 本 PSR 还包括自动载入的类对应的文件存放路径规范。 关于「能愿动词」的使用 为了避免歧义,文档大量使用了「能愿动词」,对应的解释如下: 必须 (MUST):绝对,严格遵循,请照做,无条件遵守; 一定不可 (MUST NOT):禁令,严令禁止;

  • 我正在查看工作区中的一些旧示例。我看不出自动连线是如何完成的,因为没有@Autowired。Spring Boot默认配置。 它工作得很好,但是如果没有自动配线,这些豆子是如何自动配线的呢?它们是自动作为字段还是在构造函数中?

  • 我可以在输入层之后使用批处理规范化层而不规范化我的数据吗?我可以期望得到类似的效果/性能吗? 在keras函数中,它应该是这样的: