我是 rails 新手,我正在為控制器方法創建撰寫規范測驗,但我不知道如何通過引數用戶獲取方法。這是專案控制器的創建方法
def create
@project = Project.new(project_params)
@project.creator = current_user
byebug
if params[:project][:users].any?
byebug
params[:project][:users].reject!(&:empty?)
@project.enrolled_user = User.find( params[:project][:users])
end
byebug
authorize @project
respond_to do |format|
if @project.save
format.html { redirect_to @project, notice: 'Project was successfully
created.'}
format.json { render :show, status: :created, location: @project}
else
format.html { render :new}
format.json { render json: @project.errors, status: :unprocessable_entity}
end
end
end
project_spec.rb
context "post create" do
it "creates a new project" do
get :new
byebug
post :create,params: { user: user.id }
byebug
expect(project1.creator).to eq(user)
expect(enrolled_user.user_id).to eq(user1.id)
expect(response).to be_successful
end
end
終端
1) ProjectsController post create creates a new project
Failure/Error: if params[:project][:users].any?
NoMethodError:
undefined method `[]' for nil:NilClass
# ./app/controllers/projects_controller.rb:38:in `create'
# ./spec/requests/project_spec.rb:49:in `block (3 levels) in <main>'
uj5u.com熱心網友回復:
您確實需要系統測驗而不是控制器測驗來滿足測驗您在此處描述的功能的要求。所以 Rspec 加上 Capybara 將允許你做這樣的事情
所以使用 rails g rspec:system project 并進行類似的測驗
it "Can create a project" do
administrator_sign_in #some system test helper that creates a user and logs a user in if needed, there are plenty of examples on how to do helpers like this.
visit '/admin/projects'
click_link "New"
#save_and_open_page #Uncomment this if you want to see what your form fields are, unstyled, can be very useful when trying to see what to fill in and what button and links to press and click
fill_in "Name", with: "New project"
fill_in "Other project fields", with: "Some Data"
page.check("Name of a boolean field") #check a checkbox
click_button("Create Project")
project = Project.find_by name: "New project"
expect(current_path).to eq("/admin/projects/#{project.id}")
expect(page).to have_content("Project was successfully created")
expect(project.name_of_boolean_field).to be true
end
有關發電機的更多資訊在這里
有關系統測驗的更多資訊在這里
更多關于水豚的資訊在這里
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/440712.html
上一篇:根據該陣列中的元素對陣列進行排序
