我最近通过 rubyweekly 电子邮件发现了 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("[email protected]")
@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/