1

我正在考虑使用 FitNesse 为 RESTful API 的某些扩展编写一些验收测试。GET 响应在匿名命名空间中包含 XML,例如

<?xml version="1.0" encoding="utf-8"?>
<things xmlns="http://example.com/ns/">
<thing id="1"/>
<thing id="2"/>
</things>

FitNesse 夹具 RestFixture 似乎是一个很好的选择。它应该允许我运行 XPath 来验证响应,但这似乎不能很好地与匿名名称空间配合使用。以下测试将失败,因为需要指定命名空间:

|!-smartrics.rest.fitnesse.fixture.RestFixture-!|http://example.com/v1.0/inbox |
|GET    | /things | 200 | | //thing |

我找不到任何表达 XPath 的方法,以便 RestFixture 能够成功解析它。

几点注意事项:

(a) 您可以查询属性,因为它们不在命名空间中。以下通过:

|GET    | /things | 200 | | //@id |

(b) 其他地方建议使用字符串匹配的示例。这是错误的-以下也通过了!

|GET    | /things | 200 | | 'complete and utter nonsense' |
4

1 回答 1

4

RestFixture 现在支持命名空间。您需要使用 RestFixtureConfig 将命名空间上下文定义为别名/命名空间 uri 的键值映射(这也必须包括默认命名空间的别名)。

然后,您可以使用其中定义的别名,这些别名在与请求的响应主体匹配的 xpath 中,或在 let() 命令中,从响应中提取数据。

rest-fixture 的实时文档中包含一个示例:

https://github.com/smartrics/RestFixture/downloads(查看可下载的html RestFixture-<ver>.html

于 2011-01-18T00:09:16.043 回答