0

私は自分のテストで物事を行う DRY の方法に固執しようとしています。ユーザーがサインインしているかどうかに応じて、特定のリンクと css を表示する2 つのレイアウトがpublicあります。application公開またはアプリケーションのリンクとコンテンツのいずれかを常にテストできる方法または方法があるかどうか疑問に思っています。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 

現在、パブリック フッターはパブリック レイアウトの一部であり、このレイアウトに属するコードが他にもあります。私の目標は、これを 1 回だけ記述し、何らかのメソッド内に配置して、必要なページ/テストに使用することです。どうすればいいですか?コンテンツを含む適切なレイアウトがすべてのテストで使用されているかどうかを確認するために書きたくありません。

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 に答える