【问题标题】:RSpec / Shoulda validate_presence_of multiple attributes syntaxRSpec / shoulda validate_presence_of 多个属性语法
【发布时间】:2016-06-14 09:19:59
【问题描述】:

当使用 Shoulda / RSpec 测试 validate_presence_of 的多个属性时,我得到这些长且重复的代码块,如下所示:

it { should validate_presence_of(:text) }
it { should validate_presence_of(:user) }
it { should validate_presence_of(:commentable) }
[...]

有没有办法把它弄干?像这样的:

it { should validate_presence_of(:text, :user, :commentable,...) }

【问题讨论】:

    标签: rspec shoulda


    【解决方案1】:

    据我所知,Shouda 没有为此内置任何内容。通常,您会希望将选项链接到 shoulda 宏,例如.with_message(...),因此对于这些情况,您的语法建议是不可能的。

    您可以改为:

    [:text, :user, :commentable].each do |field|
      it { should validate_presence_of(field) }
    end
    

    但是,为了便于阅读和维护,我不会太担心在您的测试套件中有一点重复。

    【讨论】:

      【解决方案2】:

      你可以这样做:

        describe "Validations" do
          %i[text user strict_start commentable].each do |field|
            it { is_expected.to validate_presence_of(field) }
          end
        end
      

      【讨论】:

        猜你喜欢
        • 2016-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多