加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 使用Rspec测试presence和belongs_to

发布时间:2020-12-17 03:38:45 所属栏目:百科 来源:网络整理
导读:我正在尝试学习如何使用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
我正在尝试学习如何使用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,例如因为您想测试您的控制器可以检索项目.
>如果您只需要一个对象,请使用FactoryGirl.build,并且不需要该对象存在于数据库中.不将对象保存到数据库将使您的测试更快.

希望这可以帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读