ruby on rails रेल/आरएसपीईसी-मूल सहायक विधियों के लिए लेखन परीक्षण



ruby-on-rails rspec (1)

इस तरह से इसके बारे में सोचो:

static_pages_spec.rb (utilities.rb सहित) में 'full_title' नामक 'full_title' विधि application_helper.rb में वर्णित है।

Application_helper_spec.rb स्ट्रिंग / मान (page_title) पूर्ण_चिटल के माध्यम से पारित कर रहा है। अगर मैं गलत नहीं हूं, तो यह आपके परीक्षणों में full_title पद्धति कहा जाता है।

मैं माइकल हार्टल के रेल ट्यूटोरियल के लिए अध्याय 5 के अभ्यास पर हूं और रेल / / full_title app/helpers/application_helper.rb full_title app/helpers/application_helper.rb full_title app/helpers/application_helper.rb full_title में सहायक पद्धति की full_title सहायक full_title का परीक्षण कैसे कर रहा हूं, इस बारे में मेरे सिर को लपेटने की कोशिश कर रहा हूं। मेरे सारे टेस्ट spec/requests/static_pages_spec.rb और उनके भीतर, मैं full_title को घटाकर कॉल करने के लिए full_title बुला रहा हूं।

इसलिए, मूल full_title का परीक्षण करने के लिए मैं spec/helpers/application_helpers_spec.rb full_title spec/helpers/application_helpers_spec.rb full_title में एक टेस्ट तैयार करता हूं और इसे spec/support/utilities.rb माध्यम से शामिल करता हूं। कोड पारित हो रहा है, लेकिन मैं इस प्रक्रिया को समझना चाहता हूं (संचालन के लिए आदेश) क्या हो रहा है। धन्यवाद।

क्या मैं इसे इस तरह सोच सकता हूँ?

  1. Rspec static_pages_spec.rb चलाने के लिए शुरू होता है ( utilities.rb सहित। static_pages_spec.rb )
  2. रुपयेपीसी static_pages_spec.rb में पूर्ण_चिटल विधि को static_pages_spec.rb
  3. Rspec application_helper_spec.rb को चलाने के लिए शुरू होता है
  4. describe "full_title" do को application_helper_spec.rb में describe "full_title" do
  5. full_title मूल full_title विधि को दिखता है और application_helper_spec.rb लिए परीक्षण पूरा application_helper_spec.rb
  6. Static_pages_spec.rb में रुपीईपी परीक्षण पूरा करता है , iterating through above process when दोहराता है , iterating through above process when पूर्ण_चिटिल `कहा जाता है।

static_pages_spec.rb

require 'spec_helper'

describe "Static pages" do

  subject { page }

  shared_examples_for "all static pages" do
    it { should have_selector('h1',    text: heading) }
    it { should have_selector('title', text: full_title(page_title)) }
  end

  describe "Home page" do
    before { visit root_path }
    let(:heading)    { 'Sample App' }
    let(:page_title) { '' }

    it_should_behave_like "all static pages"
    it { should_not have_selector 'title', text: '| Home' }
  end

  describe "Help page" do
    before { visit help_path }
    let(:heading) { 'Help' }
    let(:page_title) { 'Help' }

    it_should_behave_like "all static pages"
  end

  describe "About page" do
    before { visit about_path }
    let(:heading) { 'About' }
    let(:page_title) { 'About Us' }

    it_should_behave_like "all static pages"
  end

  describe "Contact page" do
    before { visit contact_path }
    let(:heading) { 'Contact' }
    let(:page_title) { 'Contact' }

    it_should_behave_like "all static pages"   
  end

  it "should have the right links on the layout" do
    visit root_path
    click_link "About"
    page.should have_selector 'title', text: full_title('About Us')
    click_link "Help"
    page.should have_selector 'title', text: full_title('Help')
    click_link "Contact"
    page.should have_selector 'title', text: full_title('Contact')
    click_link "Home"
    page.should have_selector 'title', text: full_title('')
    click_link "Sign up now!"
    page.should have_selector 'title', text: full_title('Sign up')
    click_link "sample app"
    page.should_not have_selector 'title', text: full_title('| Home')
  end
end

application_helper_spec.rb

require 'spec_helper'

describe ApplicationHelper do

  describe "full_title" do
    it "should include the page title" do
      full_title("foo").should =~ /foo/
    end

    it "should include the base title" do
      full_title("foo").should =~ /^Ruby on Rails Tutorial Sample App/
    end

    it "should not include a bar for the home page" do
      full_title("").should_not =~ /\|/
    end
  end
end

application_helper.rb

module ApplicationHelper

    #Returns the full title on a per-page basis.
    def full_title(page_title)
        base_title = "Ruby on Rails Tutorial Sample App"
        if page_title.empty?
            base_title
        else
            "#{base_title} | #{page_title}"
        end
    end
end