2016-07-04 16 views
0

Wenn Sie eine Testspezifikation in Concordion schreiben, möchten Sie manchmal die Ausgabe eines Aufrufs in das Skript einschließen. Zum Beispiel möchte ich einen REST-Service testen, indem ich ein neues Objekt auf ihm poste und dann überprüfe, ob das zurückgegebene Objekt eine eigene URI-Zeichenfolge enthält. Unter diesen Umständen halte ich es für richtig, dass das Format der URI-Zeichenfolge im Testskript enthalten ist und nicht in einer Fixture verborgen ist.Verwenden von Variablen in Concordion markdown

Unter der Annahme, dass ein Objekt mit dem Namen newProduct irgendwie erstellt wurde, würde Ich mag so etwas schreiben:

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)") 

Leider ist die variable productId in der letzten Zeile wird nicht aufgelöst. Welchen Ansatz würdest du empfehlen?

Antwort

0

Ich würde empfehlen, das statische Format der URI-Zeichenfolge in der Spezifikation anzugeben und nicht die tatsächlichen Werte (die dynamisch sind und jedes Mal zu einer anderen Spezifikation führen).

Das Gerät kann die erwarteten und tatsächlichen Formate vergleichen. Diese Technik wird im Kontext der Datumsumwandlung in der instrumentation documentation beschrieben.

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")_)

mit der checkHalRef Methode:

Mit dieser Technik könnten Ihre Abschriften geschrieben werden

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; }

Bei Erfolg würde die Ausgabe Dokumentation zeigen:

successful example

und bei einem Fehler:

enter image description here

+0

Das geniale ist. Ich arbeite heute an etwas anderem, werde es aber so schnell wie möglich versuchen. Der einzige Unterschied besteht darin, dass 'product' kein String ist, sondern ein POJO (eine Instanz der' Product' Klasse, die aus XML durch eine 'XStream' Instanz konvertiert wurde), so dass die Methode den aktuellen URI zu erhalten Sei anders. –

+0

Das hat wie ein Zauber funktioniert. Danke vielmals! –