0

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

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

规范/请求/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 

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

4

1 回答 1

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/

于 2012-09-08T02:35:36.607 回答