我可以在fitnesse中制作RestFixture表的场景吗?还是有另一种方法可以制作可重用的组件?

时间:2014-01-17 16:23:42

标签: fitnesse fitnesse-slim

我有一张工作台:

#some javascript stuff
!define or { || }

#my stuff
!define headers { !-Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Accept: application/json -! }

|Table:smartrics.rest.fitnesse.fixture.RestFixture|http://admin:password@localhost:5984/|
|setHeaders|${headers} |
|DELETE    |/q-couch | | | jsonbody.ok ${or} jsonbody.error=="not_found"  |

我现在想要重新考虑制作可重用的组件,以及更可读的测试。 我试过这个:

#what I hoped would be a reusable component.
|scenario|deletedb|name|
|Table:smartrics.rest.fitnesse.fixture.RestFixture|http://admin:password@localhost:5984/|
|setHeaders|${headers} |
|DELETE|/@dbName | | |jsonbody.ok ${or} jsonbody.error=="not_found"  |   

#A more readable test
|Script|
|deletedb|q-couch|

当我按下测试时,我会在脚本中的每一行上获得The instance scriptTableActor. does not exist

我做的是有效的吗?我做错了什么?

1 个答案:

答案 0 :(得分:3)

为什么错误

由于您未在脚本表标题中提供任何fixture的引用,因此发生scriptTableActor.错误。从ScriptTable guide剪下来:

  

第一行只是单词“Script”,后面跟着将由表的其余部分使用的fixture(称为“actor”)的名称和构造函数参数。如果没有指定actor,则将使用此测试页上的前一个脚本表的actor。

RestFixture有一个特殊的脚本表夹具,所以你的第一行应该定义为:

|Script|RestScriptFixture|http://admin:password@localhost:5984/|

可重复使用的RestFixture组件

我使用了场景结构(在ScenarioLibrary中定义)和我们包含的构建块来获取可重用的组件。此策略也可以与RestFixture以外的其他装置一起使用。

在你的情况下,我会定义以下场景

!|Scenario|When a |http_verb |is sent to |service |with headers set to |headers|
|setHeaders|@headers|
|@http_verb|@service|

!|Scenario|the response should contain |element |equal to |value |or |second_element |equal to |second_value|
|check|js|(response.jsonbody.hasOwnProperty('@element') && response.jsonbody.@element.toString()==@value)!-||-!(response.jsonbody.hasOwnProperty('@second_element') && response.jsonbody.@second_element.toString()==@second_value)|true|

第二种情况有点沉重,所以可以按顺序解释。由于我不知道您的响应中是否始终返回okerror,因此首先检查该元素是否与response.jsonbody.hasOwnProperty('@element')一起存在,然后检查它是否具有正确的值response.jsonbody.@element.toString()==@value)。我已使用||转义了或!--!运算符。

构建基块wiki如下所示:

|Script|RestScriptFixture|${server}|
|When a |delete |is sent to |${service} |with headers set to |${headers}|
|the response should contain |${element} |equal to |${value} |or |${second_element} |equal to |${second_value}|

测试维基将是:

!define TEST_SYSTEM {slim}
!define server {http://admin:password@localhost:5984/}
!define headers { !-Authorization: Basic YWRtaW46cGFzc3dvcmQ=
Accept: application/json -! }
!define service {/q-couch/}
!define element {ok}
!define value {0}
!define second_element {error}
!define second_value {not_found}

!include PathTo.BuildingBlock

上面的一些定义,我可能会放入SetUp wiki。