【问题标题】:How to test before_validation callback model concerns in rspec如何在 rspec 中测试 before_validation 回调模型问题
【发布时间】:2019-06-27 13:27:18
【问题描述】:

我正在学习为我的代码编写规范,但我还是新手。尝试为我的模型问题编写规范/共享示例,但我不明白如何编写它,因为我发现这个非常复杂。

如果有人可以帮助我或向我展示如何为此类代码编写规范,那将非常有帮助。下面是我关心的 AddStakeholder。

module AddStakeholder
  extend ActiveSupport::Concern

  included do
    before_validation -> { add_stakeholders }
  end

  private

  def add_stakeholders
    return unless self.stakeholder

    company = if self.is_a?(Certificate)
                self.round ? self.round.company : self.company
              else
                self.company
              end
    existing_stakeholder = company.stakeholders.find_by_email(self.stakeholder.email)
    if existing_stakeholder.present?
      if self.stakeholder.name == existing_stakeholder.name
        self.stakeholder = existing_stakeholder
      else
        self.stakeholder.company = company
      end
    else
      self.stakeholder.company = company
    end
  end
end

【问题讨论】:

标签: ruby-on-rails rspec rspec-rails shoulda rspec-expectations


【解决方案1】:

您的代码 sn-p 中没有足够的信息来准备一个完整的示例,但它看起来有点类似于:

RSpec.describe Thing, type: :model do
  it "adds stakeholders" do
    t = Thing.new(...)
    expect(t).to be_valid # or .to_not be_valid depending on your validations on Thing
    expect(t.stakeholder).to ... # whatever you expect it to be
  end
end

【讨论】:

  • 上面的代码sn-p值得关注。我相信你的是一个模型的规格。你认为这也可以用来解决问题吗?
  • 您可以使用它来测试关注扩展的事物,同时您可以遵循以下建议:stackoverflow.com/questions/16525222/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多