首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fitnesse smartrics.rest.fitnesse.fixture.RestFixture.setBaseUrl

Fitnesse smartrics.rest.fitnesse.fixture.RestFixture.setBaseUrl
EN

Stack Overflow用户
提问于 2013-02-19 02:38:34
回答 2查看 535关注 0票数 0

我需要一个测试来调用一个生成安全令牌的REST端点,然后再对实际的测试系统进行第二次调用。为此,我使用了smartrics.rest.fitnesse.fixture.RestFixture,并将实例化中的baseurl设置为第一个基址。我正在尝试进行此调用,然后将新的baseurl设置为新的位置,但在执行此操作时遇到了问题。

仔细阅读代码,似乎有一个方法setBaseUrl(Url url),但我找不到一个使用它的例子,我自己也没能弄清楚。

有没有人幸运地做到了这一点,或者有其他更好/更容易的方法来实现这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-30 23:22:53

这个问题存在于RestFixture:processRow中--因为它使用了Java反射,所以它试图在没有参数的情况下调用方法。这将失败,因为setBaseUrl接受一个参数(Url)。我尝试了一个修改,尽管不是实现它的最好方法-当前代码RestFixture v3.0 (RestFixture.processRow()):

代码语言:javascript
复制
method1 = getClass().getMethod(methodName);
method1.invoke(this);

修改了RestFixture.processRow()中的代码:

代码语言:javascript
复制
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,这应该可以正常工作。

票数 1
EN

Stack Overflow用户

发布于 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作为变量传递。

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

https://stackoverflow.com/questions/14943130

复制
相关文章

相似问题

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