本文主要介紹怎么使用Rspec+factory_girl進(jìn)行復(fù)雜模型測(cè)試,
創(chuàng)新互聯(lián)公司主營(yíng)田林網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都app開(kāi)發(fā),田林h5重慶小程序開(kāi)發(fā)搭建,田林網(wǎng)站營(yíng)銷推廣歡迎田林等地區(qū)企業(yè)咨詢
首先介紹下本人使用的模型機(jī)構(gòu)
class Node
belongs_to :parent,:class_name =>Node
has_many :children,:class_name =>Node
:foreign_key =>:parent_id
end
end
可以看出,我使用的是一個(gè)自關(guān)聯(lián)表,通過(guò)自己:parent_id這個(gè)鍵將本表自己關(guān)聯(lián)起來(lái),
現(xiàn)在介紹怎么用factory_girl模擬這樣的模擬結(jié)構(gòu)
首先介紹從葉子結(jié)點(diǎn)像root結(jié)點(diǎn)一個(gè)一對(duì)一的模型結(jié)構(gòu)
代碼如下
FactoryGirl.define do
factory :node do
title "XXXXX"
factory :node_leaf ,:class => :node do
association :parent,:factory =>:node
end
end
通過(guò)association這個(gè)值,我們將node與node_leaf做成一對(duì)一關(guān)聯(lián)
然后我們?cè)贅?gòu)建root結(jié)點(diǎn)向leaf結(jié)點(diǎn)一個(gè)一對(duì)多的情況
FactoryGirl.define do
factory :node do
title "XXXXX"
factory :node_root,:class => :node do
after_create do |node|
node.children <<FactoryGirl.create(:node,:parent => node)
node.children <<FactoryGirl.create(:node,:parent => node)
node.children <<FactoryGirl.create(:node,:parent => node)
end
end
end
end
然后我們?cè)傧翿spec代碼中創(chuàng)建測(cè)試模型
Factory.build(:node_root) #這種方式不會(huì)被保存在數(shù)據(jù)庫(kù)中
Factory.create(:node_leaf)#這種方式其實(shí)就多了一個(gè)SAVE動(dòng)作
如果想查找可以下一結(jié)點(diǎn)用關(guān)鍵字查詢比如
Factory.create(:node_root).children.find_by_title("1")
也可以使用:each這個(gè)選項(xiàng)遍歷整個(gè)模型比如
Factory.create(:node_root).children.each do |node|
參考資料
https://github.com/thoughtbot/factory_girl/issues/202關(guān)于一對(duì)多的關(guān)系
http://www.cnblogs.com/ToDoToTry/archive/2011/09/10/2173382.htmlfactory_girl測(cè)試
http://ruby-china.org/topics/3777很不錯(cuò)關(guān)于factory_girl的介紹,很全面
文章名稱:學(xué)習(xí)札記——Rspec+factory_girl進(jìn)行復(fù)雜模型測(cè)試
分享鏈接:http://aaarwkj.com/article40/peepho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷、微信公眾號(hào)、網(wǎng)站設(shè)計(jì)、用戶體驗(yàn)、品牌網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源:
創(chuàng)新互聯(lián)