我需要一个测试来调用一个生成安全令牌的REST端点,然后再对实际的测试系统进行第二次调用。为此,我使用了smartrics.rest.fitnesse.fixture.RestFixture,并将实例化中的baseurl设置为第一个基址。我正在尝试进行此调用,然后将新的baseurl设置为新的位置,但在执行此操作时遇到了问题。
仔细阅读代码,似乎有一个方法setBaseUrl(Url url),但我找不到一个使用它的例子,我自己也没能弄清楚。
有没有人幸运地做到了这一点,或者有其他更好/更容易的方法来实现这一点?
发布于 2014-01-30 23:22:53
这个问题存在于RestFixture:processRow中--因为它使用了Java反射,所以它试图在没有参数的情况下调用方法。这将失败,因为setBaseUrl接受一个参数(Url)。我尝试了一个修改,尽管不是实现它的最好方法-当前代码RestFixture v3.0 (RestFixture.processRow()):
method1 = getClass().getMethod(methodName);
method1.invoke(this);修改了RestFixture.processRow()中的代码:
Method[] methods = getClass().getMethods();
int i = 0;
for(i = 0; i < methods.length; i++){
if(methodName.equals(methods[i].getName())){
method1 = methods[i];
break;
}
}
Class[] paramTypes = method1.getParameterTypes();
List<Object> params = new ArrayList<Object>();
for(i = 0; i < paramTypes.length; i++){
String cellText = row.getCell(i+1).text();
Object param = paramTypes[i].getConstructor(String.class).newInstance(cellText);
params.add(param);
}
method1.invoke(this, params.toArray());完成此修改后(您可能需要添加所需的导入- java.lang.InstantiationException、java.lang.Object、java.util.ArrayList;以及InstantiationException的异常处理程序),重新构建RestFixture,这应该可以正常工作。
发布于 2014-03-07 08:24:56
我们有一个听起来类似的需求--我们需要使用RestFixture(POST)来检索一个网址,以便在随后的RestFixture调用(GET)中使用。(请注意,我们使用的是旧版RestFixture 1.1)
我在RestFixture.java中修改了processArguments()方法,如下所示:
// baseUrl = new Url(args[0]); // original line baseUrl = new Url(resolve(args[0])); // modified
有了这个修改,我的Fitnesse测试看起来像这样:
`!| RestFixture | http:///fds
setBody |{"param1":"blah","param2":"blather"}
POST | /GetThatUrl | 200 ||
let | $urlresult | body |
!| RestFixture | $urlresult
GET| | 200 | Content-Length:\d+ ||`
如果不更改代码,就无法解析$urlresult,我也无法将URL作为变量传递。
https://stackoverflow.com/questions/14943130
复制相似问题