我有一张工作台:
#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
。
我做的是有效的吗?我做错了什么?
答案 0 :(得分:3)
由于您未在脚本表标题中提供任何fixture的引用,因此发生scriptTableActor.
错误。从ScriptTable guide剪下来:
第一行只是单词“Script”,后面跟着将由表的其余部分使用的fixture(称为“actor”)的名称和构造函数参数。如果没有指定actor,则将使用此测试页上的前一个脚本表的actor。
RestFixture有一个特殊的脚本表夹具,所以你的第一行应该定义为:
|Script|RestScriptFixture|http://admin:password@localhost:5984/|
我使用了场景结构(在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|
第二种情况有点沉重,所以可以按顺序解释。由于我不知道您的响应中是否始终返回ok
和error
,因此首先检查该元素是否与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。