как сделать копию результата звонка - PullRequest
1 голос
/ 27 марта 2019

Почему следующий тест не проходит? Я должен упустить что-то фундаментальное о том, как работает копирование. Кажется, у него есть ссылка на объект json, а не его копия.

Feature: testing

  @one
  Scenario: one
    * def root = { name: 'inner' }

  Scenario: two
    * def a = call read('testing.feature@one')
    * copy b = a
    * set b.root.name = "copy"
    * match b.root.name == "copy"
    * match a.root.name == "called"

1 Ответ

2 голосов
/ 27 марта 2019

Всегда распаковывайте результаты call. Причина в том, что конкретный объект JSON является «специальным» (карта Java), который не следует правилам copy - потому что вы можете иметь ссылки на другие объекты Java. Так что это будет работать:

  @one
  Scenario: one
    * def root = { name: 'inner' }

  Scenario: two
    * def temp = call read('dev.feature@one')
    * def a = temp.root
    * copy b = a
    * set b.name = "copy"
    * match b.name == "copy"
    * match a.name == "inner"
...