网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

学习札记——Rspec+factory_girl进行复杂模型测试

本文主要介绍怎么使用Rspec+factory_girl进行复杂模型测试,

创新互联公司主营田林网站建设的网络公司,主营网站建设方案,成都app开发,田林h5重庆小程序开发搭建,田林网站营销推广欢迎田林等地区企业咨询

首先介绍下本人使用的模型机构
class Node
belongs_to :parent,:class_name =>Node
has_many :children,:class_name =>Node
                :foreign_key =>:parent_id
end

end
可以看出,我使用的是一个自关联表,通过自己:parent_id这个键将本表自己关联起来,
现在介绍怎么用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做成一对一关联
然后我们再构建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代码中创建测试模型
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|
node.title
end

参考资料
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://bjjierui.cn/article/peepho.html

其他资讯