2016-07-04 1 views
0

При написании спецификации теста в Concordion вы иногда хотите включить вывод вызова в скрипт. Например, я хочу протестировать службу REST, отправив ему новый объект, а затем проверив, что возвращаемый объект включает в себя свою собственную строку URI. В этих обстоятельствах я считаю правильным, чтобы формат строки URI был включен в тестовый скрипт, а не был похоронен внутри прибора.Использование переменных в Concordion markdown

Предполагая, что объект с именем newProduct был создан каким-то образом, я хотел бы написать что-то вроде этого:

When I [post a new product](- "#response=post(#newProduct)")<br/> 
Then a [product record](- "#product=getContent(#response)") is returned<br/> 
and its [id](- "c:set=#productId=getId(#product)") is [ ](- "c:echo=#productId)")<br/> 
and its HAL reference matches [products/#productId](- "?=getHalRef(#product)") 

К сожалению, в последней строке переменная productId не решена. Какой подход вы бы порекомендовали?

ответ

0

Я бы рекомендовал указать статический формат строки URI в спецификации, а не фактические значения (которые являются динамическими и будут приводить к разным параметрам каждый раз).

Прибор может сравнивать ожидаемые и фактические форматы. Этот метод описан в контексте преобразования даты в instrumentation documentation.

Используя эту технику, ваш Markdown может быть записана в виде:

When I [post a new product](- "#response=post(#newProduct)")<br/> Then a [product record](- "#product=getContent(#response)") is returned<br/> with a HAL reference matching [products/#productId](- "?=checkHalRef(#product, #TEXT)") (_[#productId](- "#productId=getId(#product)") is [ ](- "c:echo=#productId")_)

с checkHalRef методом:

public String checkHalRef(String product, String expected) { String halRef = getHalRef(product); String expectedHalRef = expected.replace("#productId", getId(product)); if (halRef.equals(expectedHalRef)) { return expected; } return halRef; }

В случае успеха, документация результат будет показывать:

successful example

и неудачи:

enter image description here

+0

Это гениально. Сегодня я работаю над чем-то другим, но попробую, как только смогу. Единственная разница будет заключаться в том, что 'product' не является String, а POJO (экземпляр класса' Product', который был бы преобразован из XML с помощью экземпляра 'XStream'), поэтому метод получения фактического URI будет будь другим. –

+0

Это работало как шарм. Большое спасибо! –