RSpec / 应该 validate_presence_of 多属性语法
RSpec / Shoulda validate_presence_of multiple attributes syntax
当使用 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,...) }
据我所知,Shoulda 没有为此内置任何内容。通常你会想要将选项链接到 shoulda 宏,例如.with_message(...)
,因此对于这些情况,您的语法建议是不可能的。
您可以改为执行以下操作:
[:text, :user, :commentable].each do |field|
it { should validate_presence_of(field) }
end
但是,为了便于阅读和维护,我不会太担心在您的测试套件中有一点重复。
你可以这样做:
describe "Validations" do
%i[text user strict_start commentable].each do |field|
it { is_expected.to validate_presence_of(field) }
end
end
当使用 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,...) }
据我所知,Shoulda 没有为此内置任何内容。通常你会想要将选项链接到 shoulda 宏,例如.with_message(...)
,因此对于这些情况,您的语法建议是不可能的。
您可以改为执行以下操作:
[:text, :user, :commentable].each do |field|
it { should validate_presence_of(field) }
end
但是,为了便于阅读和维护,我不会太担心在您的测试套件中有一点重复。
你可以这样做:
describe "Validations" do
%i[text user strict_start commentable].each do |field|
it { is_expected.to validate_presence_of(field) }
end
end