سؤال

أنا أتعلم RSPEC 2 مع Rails 3. من أجل تعيين محتويات العلامة في التخطيط لكل صفحة ، لدي مساعد يمكن استخدامه لتعيين العنوان ثم إعادته:

def page_title(subtitle=nil)
  if @title.nil?
    @title = ["Site Name"]
  end

  unless subtitle.nil?
    @title << subtitle
  end

  @title.reverse.join " - "
end

يتم استدعاء المساعد من كل من التخطيط ، حيث يعيد العنوان ، ووجهات النظر الفردية ، حيث يضبط العنوان. الآن ، أريد أن أختبر في مواصفات العرض أن العنوان يتم تعيينه بشكل صحيح. نظرًا لعدم تقديم التصميم ، فقد قررت الاتصال بـ Page_title من المواصفات وتحقق من أن قيمة الإرجاع هي ما أتوقعه. ومع ذلك ، هذا لا يعمل ، ودائمًا ما يعيد "اسم الموقع". ماذا علي أن أفعل؟

هل كانت مفيدة؟

المحلول

لست متأكدًا مما إذا كان هذا هو ما تقصده ، ولكن يمكنك اختبار التصميم مباشرة:

require 'spec_helper'
include ApplicationHelper

describe "layouts/application" do
  it "should add subtitle to page title" do
    page_title("Subtitle")
    render
    rendered.should have_selector('title:contains("Subtitle - Site Name")')
  end
end

تعديل

يمكنك أيضا اختبار أن page_title الطريقة تسمى في العرض:

describe "mycontroller/index" do
  it "should set subtitle" do
    view.should_receive(:page_title).with("Subtitle")
    render
  end
end

أو يمكنك استخدام اختبار وحدة التحكم مع render_views:

describe Mycontroller do
  render_views
  it "sets the page title" do
    get :index
    response.body.should contain("Subtitle - Site Name")
  end
end

نصائح أخرى

للتحقق من عنوان صفحة في عرض المواصفات ، حاول:

require "spec_helper"

describe "controller/view.html.erb" do
  it "renders page title with 'Title | MySite'" do
    render template: "controller/view", layout: "layouts/application"
    rendered.should have_selector("title", text: "Title | MySite")
  end
end

نظرًا لأنه يتم استدعاء العرض خارج وحدة التحكم ، يجب إخباره عن التصميم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top