ruby on rails-RSpec何时使用它应该responsd_to



我有两个通过belongs_tohas_many关系链接在一起的模型,如下所示。

Class OtherModel < ActiveRecord::Base
  belongs_to my_model
end
class MyModel < ActiveRecord::Base
  has_many other_models
end

我现在有了相应的测试来验证它们是否具有如下所示的正确关系。

RSpec.describe MyModel, type: :model do
  it {should have_many(:other_models)}
  it {should respond_to(:other_models)}
end
RSpec.describe OtherModel, type: :model do
  it {should have_many(:my_model)}
  it {should respond_to(:my_model)}
end

对于这种关系,是否需要respond_to,如果需要,为什么?它检查的是have_many尚未检查的内容?如果在这种情况下不需要respond_to,什么时候使用它是合适的时间?根据我目前的理解,have_many已经验证了该字段的存在,因此废弃了respond_to检查。

据我所知,你是绝对正确的。只要使用should have_manyshould belong_to,就不需要respond_to。你的代码可能看起来像这个

RSpec.describe MyModel, type: :model do
  it {should have_many(:other_models)}
end
RSpec.describe OtherModel, type: :model do
  it {should belong_to(:my_model)}
end

您还可以查看以下RSpec Shoulda匹配器列表。

使用respond_to的最佳时机是将模块包含到类中,并且希望确保该类具有特定的方法。示例:

Class MyModel < ActiveRecord::Base
  include RandomModule
  has_many other_models
end
module RandomModule
  def random_calculation
    3 * 5
  end
end
RSpec.describe MyModel, type: :model do
  it {should have_many(:other_models)}
  it {should respond_to(:random_calculation)}
end

相关内容

  • 没有找到相关文章

最新更新