ruby-on-rails – 使用Rspec测试presence和belongs_to
我正在尝试学习如何使用Rspec进行测试.
目前我有一个Item类的规范: require 'spec_helper' describe Item do it { should belong_to :list } before(:each) do @item = FactoryGirl.create(:item) end subject { @item } it { should respond_to :name } it { should validate_presence_of :name } end 不过,我有几个问题. 是{should validate_presence_of:name}是否与写作相同: describe "when name is not present" do before {?@item.name = "" } it { should_not be_valid } end 或两者之间是否存在重大差异? 我也想知道它是否应该在一个规范中写出{should belongs_to:list},或者是否有更好的方法. 我也知道我可以做@item = FactoryGirl.build(:item)或FactoryGirl.create(:item). create是否将项目保存到测试数据库并且构建不存在?或者我在这里感到困惑.我什么时候应该使用哪个? 谢谢. 解决方法
我猜你正在使用应该匹配的东西或类似的东西.他们有优势(我认为)他们为您提供简短而简洁的匹配器,就像您使用的那样.
我个人认为以下测试: it { should belong_to :list } it { should validate_presence_of :name } 很重要,因为我的班级很可能看起来如下: class Item belongs_to :list validate_presence_of :name end 如果有人更改了这些行中的任何一行,它将显示在测试中. 因此,他们确实值得编写规范,也没有多少工作. 第二:是的,如果validate_presence_of确实类似于更大的形式,但我发现更短的形式更具表现力.请使用简短的表格! 第三:FactoryGirl差异: >如果对象需要存在于数据库中,请使用FactoryGirl.create,例如因为您想测试您的控制器可以检索项目. 希望这可以帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |