كيف يمكنني اختبار عنوان صفحة من مواصفات عرض RSPEC؟
-
25-09-2019 - |
سؤال
أنا أتعلم 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
نظرًا لأنه يتم استدعاء العرض خارج وحدة التحكم ، يجب إخباره عن التصميم.