我自己的DSL在rspec,黄瓜之上

时间:2011-08-12 05:16:21

标签: rspec cucumber bdd webrat

我有兴趣在我的黄瓜webrat BDD套件上应用另一层抽象,它知道我正在使用的DOM。

目前我正在编写类似于此示例的步骤定义:

response_body.should have_selector("div", :id => 'left-side-bar') do |div|
  div.should have_selector("h1", :content => 'Hello')
  ... other stuff
end

我知道我可以用xpath和其他各种方法做到这一点,但我想使用我自己的DSL这样:

left_sidebar.should have_heading("Hello")

基本上,我想代表我的客户需要的项目特定实体,例如DSL中的菜单项,块或小工具,列,页眉等。

我该怎么做?这有用吗?我的申请不是铁路申请(如果重要的话)

1 个答案:

答案 0 :(得分:4)

这听起来很像页面对象模式:

http://code.google.com/p/selenium/wiki/PageObjects

这当然很实用,并且您的项目不是rails应用程序也没什么区别。

基本上,您需要定义一组对所测试站点的页面\组件进行建模的对象,并提供访问这些对象上的页面内容的方法。一个优点是所有关于页面标记的知识都保存在这些对象中,因此如果页面标记发生变化,您只需要在一次更新。

我倾向于包含有用的辅助方法,例如,在页面上找到HTML表格并将其转换为散列数组,以便在黄瓜步骤中进行比较。