Jer*_*ith 3 ruby rspec ruby-on-rails shoulda
我有一堆非常重复的rspec测试,它们都具有相同的格式:
it "inserts the correct ATTRIBUTE_NAME" do
@o.ATTRIBUTE_NAME.should eql(VALUE)
end
Run Code Online (Sandbox Code Playgroud)
如果我能做一个像以下那样的线测试会很好:
compare_value(ATTRIBUTE_NAME, VALUE)
Run Code Online (Sandbox Code Playgroud)
但是,似乎并不适合这些类型的测试.还有其他选择吗?
Dav*_*sky 11
有时我后悔subject作为最终用户设备暴露.它被引入以支持扩展(如shoulda匹配器),因此您可以编写如下示例:
it { should do_something }
Run Code Online (Sandbox Code Playgroud)
但是,这样的例子读得不好:
it { subject.attribute.should do_something }
Run Code Online (Sandbox Code Playgroud)
如果您要subject明确使用,然后在示例中明确引用它,我建议使用specify而不是it:
specify { subject.attribute.should do_something }
Run Code Online (Sandbox Code Playgroud)
底层语义是相同的,但这个^^可以大声朗读.