我想用rspec來測試一個現有的rails項目。我想測試一個控制器,但得到一個我無法解決的錯誤:S這個規範和控制器代碼有什麼問題?
這是我的規範代碼;
require 'spec_helper'
describe BriefNotesController do
before(:all) do
@customer=Factory(:customer)
@project=Factory(:project_started, :owner => @customer)
end
context 'get :new' do
it 'should redirect to login page for not signed in users' do
get :new, :project_id => @project.id
response.should redirect_to("/kullanici-girisi")
end
it 'should be success and render new brief note page for project owner' do
sign_in @customer
get :new, :project_id => @project.id
response.should be_success
end
end
end
這是我的控制器代碼;
class BriefNotesController < ApplicationController
before_filter :authenticate_user!
before_filter :find_project
def new
@brief_note = @project.brief_notes.new
end
def create
@brief_note = @project.brief_notes.build(params[:brief_note])
if @brief_note.save
redirect_to brief_project_path(@project)
else
render :action => :new
end
end
private
def find_project
@project = current_user.projects.find_by_cached_slug([params[:project_id]])
end
end
我覺得current_user.projects.find_by_cached_slug方法不起作用。所以這是錯誤;
Failures:
1) BriefNotesController get :new should be success and render new brief note page for project owner
Failure/Error: get :new, :project_id => @project.id
NoMethodError:
undefined method `brief_notes' for nil:NilClass
# ./app/controllers/brief_notes_controller.rb:6:in `new'
# ./spec/controllers/brief_notes_controller_spec.rb:19:in `block (3 levels) in <top (required)>'
您是否使用舊版FactoryGirl? – jugglinghobo
組:測試做 寶石「早該」 寶石「RSpec的護欄」,「〜> 2.11.0」 寶石「factory_girl_rails」 寶石「webrat」,「0.7.1」 結束所以沒有版本聲明 – user1609468
我想[factory_girl](https://github.com/thoughtbot/factory_girl/blob/master/GETTING_STARTED.md#using-factories)語法是錯誤的。但我不明白這可能會導致你的錯誤。 – jugglinghobo