2011-01-05 51 views
1

我正在考慮使用FitNesse爲RESTful API的某些擴展編寫一些驗收測試。 GET響應在匿名名稱空間中包括XML,例如使用FitNesse使用RestFixture和匿名命名空間測試RESTful API

<?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將成功地解析它的方式。

有兩點要注意:

(一),因爲它們在命名空間不是您可以查詢的屬性。以下通過:

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

(b)其他地方使用字符串匹配的示例。這是錯誤的 - 下面的傳球也是!

|GET | /things | 200 | | 'complete and utter nonsense' | 
+0

我發現使用XPath局地一個醜陋的解決方法例如,//* [local-name(.)='thing'][@id="2「]應該工作 – MrBlueSky 2011-01-06 16:01:21

+0

作爲參考,我也在原始RestFixture作者的博客上提出了這個問題: http://smartrics.blogspot.com/2008/08/get-fitnesse-with-some-rest.html – MrBlueSky 2011-01-07 09:14:58

回答

4

RestFixture現在支持命名空間。 您需要使用RestFixtureConfig(它也必須包含默認名稱空間的別名)將名稱空間上下文定義爲別名/名稱空間URI的鍵值映射。

然後,您可以使用xpath中定義的與請求響應正文或let()命令匹配的別名從響應中提取數據。

包括一個示例,其餘夾具的活文檔中:

https://github.com/smartrics/RestFixture/downloads(查看下載HTML RestFixture- <版本>的.html