【问题标题】:Capybara & Rspec: How can I always test for the layout so I don't have to keep rewriting the code for it?Capybara & Rspec:我怎样才能始终测试布局,这样我就不必为它重写代码了?
【发布时间】:2012-09-08 02:25:33
【问题描述】:

我在测试中尝试坚持 DRY 的做事方式。我有两个布局,publicapplication,它们根据用户是否登录显示某些链接和 css。我想知道他们是否是一种方式,或者我如何始终测试我的公共或应用程序链接和内容?他们使用我的views/shared 文件夹中的不同视图。

这是我的公开欢迎页面的测试示例:

spec/requests/pages_spec.rb

describe 'Pages' do

  describe 'Welcome Page' do

    before { visit root_path }
    response.should render_template("layouts/public")

    it 'should have public footer present' do
      find_link('Home').visible?
      find_link('Login').visible?
      find_link('Help').visible?
    end
  end

end 

现在公共页脚是公共布局的一部分,我有更多属于这个布局的代码。我的目标是只写一次并将其放入某个方法中,并将其用于我需要的页面/测试。我该怎么做?我不想写看看是否在每个测试中都使用了适当的布局及其内容。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 capybara rspec-rails


    【解决方案1】:

    请务必记住,RSpec 只是 Ruby,或者更具体地说,它是用 Ruby 编写的用于测试的DSL

    所以,只需定义一个方法。

    describe 'Pages' do
    
      describe 'Welcome Page' do
    
        before { visit root_path }
        response.should render_template("layouts/public")
    
        it 'should have public footer present' do
          links_are_visible?.should be true
        end
    
        # Call this wherever, whenever you need it
        def links_are_visible?
          find_link('Home').visible? && find_link('Login').visible && find_link('Help').visible?
        end
      end
    
    end 
    

    您还可以分享本文中列出的示例和其他内容:http://testdrivenwebsites.com/2011/08/17/different-ways-of-code-reuse-in-rspec/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-25
      • 2022-11-28
      • 2017-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多