我最近正在研究一些rspec測試,我想知道如何正確測試控制器。我的控制是相當簡單,所以它不應該是太辛苦:簡單的控制器測試rspec rails4
class UsersController < ApplicationController
before_action :set_user, only: [:show, :edit, :update, :destroy]
# GET /users
def index
@q = User.search(params[:q])
@users = @q.result(distinct: true)
@q.build_condition if @q.conditions.empty?
@q.build_sort if @q.sorts.empty?
end
# GET /users/1
def show
end
# GET /users/new
def new
@user = User.new
end
# GET /users/1/edit
def edit
end
def archive
@q = User.search(params[:q])
@users = @q.result(distinct: true)
@q.build_condition if @q.conditions.empty?
@q.build_sort if @q.sorts.empty?
end
# POST /users
def create
@user = User.new(user_params)
if @user.save
redirect_to users_path, notice: 'Student was successfully added.'
else
render action: 'new'
end
end
# PATCH/PUT /users/1
def update
if @user.update(user_params)
redirect_to @user, notice: 'Student information was successfully updated.'
else
render action: 'edit'
end
end
# DELETE /users/1
def destroy
@user.destroy
redirect_to users_url, notice: 'Student information was successfully deleted.'
end
private
# Use callbacks to share common setup or constraints between actions.
def set_user
@user = User.find(params[:id])
end
# Only allow a trusted parameter "white list" through.
def user_params
params.require(:user).permit(:firstName, :lastName, :email, :dateOfBirth, :notes, :sex, :archive, :category => [])
end
end
到目前爲止,我已經寫了2-3測試,但我不知道如果他們甚至做任何事情:
describe 'GET #index' do
it "displays all users" do
get :index
response.should be_redirect
end
end
describe 'GET #new' do
it "creates a new user" do
get :new
response.should be_redirect
end
end
我嘗試做同樣的編輯和顯示,但他們沒有工作,我不知道爲什麼(因爲如我所說,我不知道我在做什麼)。 任何人都可以給我一些這些方法的測試例子,或者可以將我重定向到rails4的rspec指南?
那麼問題是,我不知道我需要使用rspec進行測試。我可以考慮使用截圖等進行很多測試,但是當涉及到rspec時,我只是不知道該怎麼做(因爲這是我第一次)。我會給betterspecs.org一看,但謝謝!:) – Meldanen
我感覺你的痛苦。我的情況完全相同。我會用這方面的一些指導來更新我的答案。 –
@Kevin Monk你能告訴我如何測試我的控制器編輯方法,我的編輯方法看起來像是'def edit @school = School.find(params [:id])end'。我已經看到,這個特定的功能不覆蓋在我的報道文件中。所以,如果你可以,那麼請幫助我。 –