簡體   English   中英

測試視圖在Rspec中正確呈現

[英]Test view correctly rendered in Rspec

如何在RSpec中執行以下操作?

test "should get home" do
  get :home
  assert_response :success
  get :home, { mobile: 1 }
  assert_response :success
end

請注意,我的移動視圖具有不同的mime類型(即.mobile.erb)

嘗試失敗:

render_views
describe "GET home" do
    it "renders the index view" do
      get :home
      expect(response).to render_template("home")
      get :home, { mobile: 1 }
      expect(response).to render_template("home")
    end
  end

如果我中斷移動視圖,則該測試不會失敗。

要檢查請求是否成功,可以使用:

it { is_expected.to respond_with 200 }

由於最佳實踐是每個測試只有一個期望 ,因此我將您的示例重構為以下形式:

describe "GET home" do
  render_views

  context 'with regular view' do
    before do
      get :home
    end

    it { is_expected.to respond_with 200 }
    it "renders the index view" do
      expect(page).to have_content 'some header'
    end
  end

  context 'with mobile view' do
    before do
      get :home, { mobile: 1 }
    end

     it { is_expected.to respond_with 200 }
     it "renders the index view" do
       expect(page).to have_content 'some header'
     end
  end
end

那只是您開始的想法。

您可以嘗試以下方法:

expect(response).to be_success

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM