我有屬於項目制定方案的模型:的Rails belongs_to的測試
class Proposal < ActiveRecord::Base
belongs_to :project
has_many :articles, :as => :document, :dependent => :destroy
has_many :sections, :through => :articles
# proposal has project - test/unit/proposal_test.rb
validates_presence_of :project_id
end
我設置爲顯示此記錄的路線是「http://domain.tld/projects/project-id/proposal」,通過此行routes.rb中 - 「map.resources:項目,:has_one =>:建議「
現在我想通過proposals_controller_test.rb來測試它。
test "should show proposal" do
get :show, :id => proposals(:one).to_param
assert_response :success
end
但是,「耙測試」一直告訴我這一點,我不知道如何解決它。對你們來說可能很容易,但對我來說是新的。
1) Error:
test_should_show_proposal(ProposalsControllerTest):
ActiveRecord::RecordNotFound: Couldn't find Project without an ID
app/controllers/proposals_controller.rb:18:in `show'
/test/functional/proposals_controller_test.rb:34:in `test_should_show_proposal'
這裏是我的控制器顯示邏輯:
# should show proposal - test/functional/proposals_controller_test.rb
def show
@project = Project.find(params[:project_id])
@proposal = @project.proposal
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @proposal }
end
end
快速去 「腳本/控制檯」 收益率:
Loading development environment (Rails 2.3.4)
>> t = Project.first
=> #<Project id: 1, name: "Test">
>> t.proposal
=> #<Proposal id: 2, active: true, project_id: 1>
而 「腳本/控制檯測試」 顯示:
Loading test environment (Rails 2.3.4)
>> t = Project.first
=> #<Project id: 298486374, name: "Test">
>> t.proposal
=> nil
這是怎麼回事古怪的ID?!?!請幫助我在測試環境中連接關聯!
更新鏈接,現在在http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html。這非常有幫助,謝謝!首先看起來很直觀,可以通過名稱在燈具中設置關聯,但是當您考慮使用生成的ID時,這很有意義。 – Ethan 2015-05-20 13:04:39