ruby - 将 SitePrism 与 Rspec 和 Capybara 功能规范一起使用

标签 ruby rspec capybara site-prism

我最近通过 ruby​​weekly 电子邮件发现了 SitePrism。 看起来很棒。我可以预见它会成为 future 。

我看到的例子大多是 cucumber 步骤。 我想弄清楚如何将 SitePrism 与 rspec 结合使用。

假设主页为@home_page,login_page为@login_page 我可以这样理解

@home_page.load # => visit @home.expanded_url

然而,我不确定的部分是,如果我想点击例如“登录”链接, capybara 中的浏览器会转到登录页面 - 然后我如何访问登录页面的实例,没有加载它。

    @home_page = HomePage.new
    @home_page.load
    @home.login_link.click
    # Here I know the login page should be loaded, so I can perhaps do 

    @login_page = LoginPage.new
    @login_page.should be_displayed
    @login_page.email_field.set("some@email.com")
    @login_page.password_field.set("password")
    @login_page.submit_button.click

etc...

这似乎可行。所以,当你知道你应该在一个特定的页面上时,你创建了那个页面的一个实例,并且以某种方式创建了 capybara “页面”上下文,如 page.find("a[href='/sessions/new'] ") 转移到最后一个 SitePrism 对象?

我只是觉得我在这里遗漏了一些东西。 我会四处玩耍,看看我能找出什么 - 只是想我可能会遗漏一些东西。 我正在查看源代码,但如果有人知道这一点...请随时分享 :)

最佳答案

您所假设的结果正是 SitePrism 的工作原理 :) 尽管您可能想查看自述文件的尾声,该自述文件解释了如何让您不必在整个测试代码中实例化页面对象。这是一个例子:

# our pages

class Home < SitePrism::Page
  #...
end

class SearchResults < SitePrism::Page
  #...
end

# here's the app class that represents our entire site:

class App
  def home
    Home.new
  end

  def results_page
    SearchResults.new
  end
end

# and here's how to use it:

#first line of the test...
@app = App.new
@app.home.load
@app.home.search_field.set "sausages"
@app.home.search_button.click
@app.results_page.should be_displayed

关于ruby - 将 SitePrism 与 Rspec 和 Capybara 功能规范一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15843110/

相关文章:

ruby - 如何在 Ruby 中编辑 txtfile 中的每 x 行?

ruby-on-rails - Sunspot:如何对具有不同值的多个字段进行全文查询?

ruby - 用两个数组确定一手扑克牌

ruby-on-rails - RSpec Controller 测试未引发错误

ruby - 用 capybara 提取url

c# - Ruby 的代码块是否与 C# 的 lambda 表达式相同?

ruby-on-rails - 选择:Capybara::Ambiguous:模糊匹配,找到 2 个匹配可见选项的元素

ruby-on-rails - rails 4 : using MiniTest AND Rspec

javascript - Capybara 无法识别动态添加的 DOM 元素?

javascript - 如何让 Capybara/Poltergeist 等待 js 启动的导航完成?