【问题标题】:how can I combine tests or reuse data in spock如何在 spock 中组合测试或重用数据
【发布时间】:2021-01-12 14:18:32
【问题描述】:

我有一种情况,我想使用post 请求创建一些数据,然后在其他几个测试中使用该帖子的结果,是否可以使用 spock 执行此操作。从下面我想重用response(或从中提取的东西。我该怎么做?

def "AddAssessment valid output case"() {
  given:
  def request = """
  {
    "assessmentTopic" : "$assessmentTopic",
    "assessmentSubTopic" : "$assessmentSubTopic",
    "duration" : "$duration",
    "assessmentLevel" : "$assessmentLevel"
  }
  """

  when:
  def result = mvc.perform(
    MockMvcRequestBuilders
      .post("/assessments/createAssessment")
      .content(request)
      .contentType(MediaType.APPLICATION_JSON)
  )

  then:
  MvcResult response = result
    .andExpect(MockMvcResultMatchers.status().isOk())
    .andExpect(MockMvcResultMatchers.jsonPath('$.*').doesNotExist())
    .andReturn()

  where:
  assessmentTopic | assessmentSubTopic | duration | assessmentLevel
  "Maths"         | "Calculus"         | "120"    | "1"
  "Civils"        | "History"          | "500"    | "4"
  "UPSC"          | "GK"               | "120"    | "5"
  "Chemistry"     | "Elements"         | "120"    | "3"
}

【问题讨论】:

  • 您是否考虑过做出您希望重复使用@Shared 变量并在setupSpec() 方法中初始化它的响应?
  • 让我试试看。谢谢!
  • 是的,它有效。今天刚试过:)

标签: spock


【解决方案1】:

您是否考虑过做出您希望重新使用@Shared 变量并在setupSpec() 方法中初始化它的响应?如果您希望在一个规范中在功能方法之间共享数据,这就是您通常会做的事情。

另见Spock manual, section "Fields"

@Shared res = new VeryExpensiveResource()

有时您需要在特性方法之间共享一个对象。例如,创建对象可能非常昂贵,或者您可能希望您的功能方法相互交互。为此,请声明一个@Shared 字段。同样,最好在声明时初始化该字段。 (从语义上讲,这相当于在setupSpec() 方法的最开头初始化字段。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    • 2016-10-09
    • 2017-01-06
    • 1970-01-01
    相关资源
    最近更新 更多