我對測試比較陌生,對Rails 4和rSpec也很新。我試圖測試一個使用Devise進行身份驗證的控制器,並且我被卡住了。我能找到的所有例子都是針對Rails 3.我使用的是Rails 4.0.3,Devise 3.2.3,rSpec 2.14.1和FactoryGirl 4.4.0。新手入門4測試 - 需要幫助入門(rSpec和設計)
class LessonPlansController < ApplicationController
before_action :authenticate_user!
# GET /lesson_plans
def index
@lesson_plans = current_user.lesson_plans.to_a
end
.
.
.
private
# Use callbacks to share common setup or constraints between actions.
def set_lesson_plan
@lesson_plan = LessonPlan.find(params[:id])
end
# Only allow a trusted parameter "white list" through.
def lesson_plan_params
params[:lesson_plan]
end
def lesson_plan_params
params.require(:lesson_plan).permit(:title, :synopsis)
end
end
這裏是我廠的定義:(也許我不需要在lesson_plan工廠來定義USER_ID?)
FactoryGirl.define do
factory :user do
sequence(:username) { |n| "user#{n}" }
sequence(:email) { |n| "foo#{n}@example.com" }
password 'foobarbaz'
password_confirmation 'foobarbaz'
created_at Time.now
updated_at Time.now
end
end
FactoryGirl.define do
factory :lesson_plan do
user_id 1
title "The French Revolution"
synopsis "Background and events leading up to the French Revolution"
end
end
與被測試部分是我卡住。
describe LessonPlansController do
let(:valid_attributes) { { } }
let(:valid_session) { {} }
# describe "GET index" do
it "assigns all lesson_plans as @lesson_plans" do
user=FactoryGirl.create(:user)
sign_in user
lesson_plan = LessonPlan.create! valid_attributes
get :index, {}, valid_session
assigns(:lesson_plans).should eq([lesson_plan])
end
end
我不知道該把什麼放在valid_attributes和valid_session(或者如果我甚至需要它們)。測試將盡可能地登錄用戶,但會在創建lesson_plan時失敗。無可否認,這是rSpec的默認/生成測試,但我不確定如何繼續。
示例我已經看到使用before塊來設置用戶。我一直無法在Devise wiki頁面上找到任何內容,涵蓋如何爲需要用戶登錄的控制器編寫基本的rSpec測試。任何指針都將不勝感激!
該規範可能會失敗,因爲您正在創建一個沒有任何屬性的課程計劃。 – 2014-03-13 00:47:21
這很有道理。我會仔細看看。 – jbmoon