首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Concordion标记中使用变量

在Concordion标记中使用变量
EN

Stack Overflow用户
提问于 2016-07-04 22:08:10
回答 1查看 596关注 0票数 0

在使用Concordion编写测试规范时,您有时希望在脚本中包含调用的输出。例如,我想通过向REST服务发布一个新对象,然后验证返回的对象是否包括它自己的URI字符串来测试该服务。在这种情况下,我认为URI字符串的格式应该包含在测试脚本中,而不是隐藏在fixture中。

假设已经以某种方式创建了一个名为newProduct的对象,我想编写如下代码:

代码语言:javascript
复制
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没有被解析。你会推荐哪种方法?

EN

回答 1

Stack Overflow用户

发布于 2016-07-05 19:59:47

我建议在规范中说明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; }

如果成功,输出文档将显示:

在失败时:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38186716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档