本文主要介紹怎么使用Rspec+factory_girl進行復雜模型測試,
創(chuàng)新互聯(lián)公司主營田林網站建設的網絡公司,主營網站建設方案,成都app開發(fā),田林h5重慶小程序開發(fā)搭建,田林網站營銷推廣歡迎田林等地區(qū)企業(yè)咨詢
首先介紹下本人使用的模型機構
class Node
belongs_to :parent,:class_name =>Node
has_many :children,:class_name =>Node
:foreign_key =>:parent_id
end
end
可以看出,我使用的是一個自關聯(lián)表,通過自己:parent_id這個鍵將本表自己關聯(lián)起來,
現在介紹怎么用factory_girl模擬這樣的模擬結構
首先介紹從葉子結點像root結點一個一對一的模型結構
代碼如下
FactoryGirl.define do
factory :node do
title "XXXXX"
factory :node_leaf ,:class => :node do
association :parent,:factory =>:node
end
end
通過association這個值,我們將node與node_leaf做成一對一關聯(lián)
然后我們再構建root結點向leaf結點一個一對多的情況
FactoryGirl.define do
factory :node do
title "XXXXX"
factory :node_root,:class => :node do
after_create do |node|
node.children < node)
node.children < node)
node.children < node)
end
end
end
end
然后我們再下Rspec代碼中創(chuàng)建測試模型
Factory.build(:node_root) #這種方式不會被保存在數據庫中
Factory.create(:node_leaf)#這種方式其實就多了一個SAVE動作
如果想查找可以下一結點用關鍵字查詢比如
Factory.create(:node_root).children.find_by_title("1")
也可以使用:each這個選項遍歷整個模型比如
Factory.create(:node_root).children.each do |node|
參考資料
https://github.com/thoughtbot/factory_girl/issues/202關于一對多的關系
http://www.cnblogs.com/ToDoToTry/archive/2011/09/10/2173382.htmlfactory_girl測試
http://ruby-china.org/topics/3777很不錯關于factory_girl的介紹,很全面
網站名稱:學習札記——Rspec+factory_girl進行復雜模型測試
文章鏈接:
http://weahome.cn/article/peepho.html