Можем ли мы использовать глобальные переменные в блоке «Когда» спецификации Спока?

Я пытаюсь использовать глобальные переменные для хранения некоторых данных в моих спецификациях spock, но не уверен в реализации. Причиной этого является использование значений из профиля пользователя и их проверка во время проверки. Чтобы быть точным, я вхожу в систему и перехожу к профилю пользователя. Мне нужно иметь возможность хранить данные адреса и данные пользователя в глобальных переменных. Когда я что-то заказываю, я хотел бы проверить детали доставки, прежде чем проверить товар.

Есть ли способ использовать глобальные переменные в блоке When.

Отредактированный пример ниже:

Объявлена ​​глобальная переменная внутри спецификации Spock (называемая «buyerNameValue»).

И попытался сохранить значение элемента внутри этой переменной для последующего использования:

def "Сохранить информацию о пользователе" () {

when:
    assert at(UserProfilePage)
    buyerNameValue      << buyerName.text() 
    println(buyerNameValue) // To see if the value is being captured
    buyerAddressValue   << buyerAddress.text()
    println(buyerAddressValue)
    landingPage.click()
then:
    assert at(LandingPage)  

}


person vijay pujar    schedule 05.11.2013    source источник
comment
я не понимаю, почему бы и нет - что вы пробовали, и это работает?   -  person wrschneider    schedule 05.11.2013
comment
Отредактировал пример, чтобы сделать его более понятным   -  person vijay pujar    schedule 08.11.2013
comment
Отвечает Питер (согласно комментариям ниже)   -  person vijay pujar    schedule 20.11.2013


Ответы (1)


Я объявил глобальные переменные, но когда я попытался получить значения из элемента, он выдал ошибку о том, что оператор присваивания не разрешен в блоке when.

Также я не мог использовать <<operator. Это разрешено только в блоке where спецификации Spock.

person user2957586    schedule 05.11.2013
comment
Пожалуйста, смотрите добавленный пример - person vijay pujar; 06.11.2013
comment
Я получаю следующую ошибку: java.lang.NullPointerException: не удается вызвать метод leftShift() для нулевого объекта в login.tests.DetailsSpec.Store Сведения о пользователе (B_LoginSpec.groovy:71) - person vijay pujar; 06.11.2013
comment
Вы можете объявить поле @Shared в классе, а затем использовать = для его назначения. Если методы тестирования зависимы, вы должны аннотировать класс с помощью @spock.lang.Stepwise. - person Peter Niederwieser; 12.11.2013
comment
Большое спасибо, Питер. Я только что понял, что ‹‹ можно использовать только в блоке where для итерации. = было все, что мне было нужно. Спасибо еще раз. - person vijay pujar; 20.11.2013