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



我有兴趣在我的cucumber web 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。

我该怎么做呢?这可行吗?我的应用程序不是一个铁路应用程序(如果这很重要)

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

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

这当然是实用的,并没有区别,你的项目是不是一个rails应用程序。

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

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

最新更新