我想根据另一个测试的结果(在同一页面上)为表设置baseUrl。 我尝试按照Fitnesse的文档(和其他资源)的这些页面: smartrics blog post,fitnesse symbols page, 但我似乎无法让它发挥作用。 到目前为止,我已尝试使用以下语法:
| Fit Rest Fixture | %emailLink% |
| GET | / | 200 |Content-Type: text/plain|Email Verified|
| Fit Rest Fixture | emailLink= |
| GET | / | 200 |Content-Type: text/plain|Email Verified|
| Fit Rest Fixture | $emailLink |
| GET | / | 200 |Content-Type: text/plain|Email Verified|
但这些都不起作用。
我知道emailLink
符号不是null,因为我在另一个表中测试它,但我似乎无法将它注入到RestFixture中。
我总是得到一个IllegalArgumentException,表明符号名称尚未根据其值进行解析,例如:
java.lang.IllegalArgumentException: Malformed base URL: $emailLink
任何帮助都将不胜感激。
答案 0 :(得分:0)
你在使用苗条吗?
http://www.fitnesse.org/FitNesse.UserGuide.WritingAcceptanceTests.SliM.SymbolsInTables
我已经用Slim这样的方式使用了一些符号,但没有特别使用REST Fixture。
答案 1 :(得分:0)
通过查看FitRestFixture
的代码并摆弄它,我想出了一些对我有用的东西。
看起来我正在寻找的功能不是开箱即用的,但可以很容易地实现(虽然这种方式不是最干净的),只需要一个简单的mod,如下所示:
/**
* @return Process args ({@link fit.Fixture}) for Fit runner to extract the
* baseUrl of each Rest request, first parameter of each RestFixture
* table.
*/
protected String getBaseUrlFromArgs() {
String arg = null;
if (args.length > 0) {
arg = args[0];
/* mod starts here */
if (isSymbol(arg)) {
String symbolName = stripSymbolNotation(arg);
arg = resolveSymbol(symbolName);
}
/* mod ends here */
}
return arg;
}
private boolean isSymbol(String arg) {
// notice that I've used the '<<' notation convention to extract the
// the value from a symbol, while in RestFixture the conventional
// notation is %symbolName%
return null != arg && arg.startsWith("<<");
}
private String stripSymbolNotation(String arg) {
return arg.substring(2);
}
private String resolveSymbol(String arg) {
String symbolValue = (String) Fixture.getSymbol(arg);
LOG.warn(String.format("resolved symbol %s to value %s", arg, symbolValue));
return symbolValue;
}