Rspec“指定”一个带有测试字段名称的行块

时间:2014-01-25 14:47:17

标签: ruby-on-rails ruby rspec

看一下这段代码:

context "first row" 
  specify { subject[0][:monthly_total].should be_nil }
  specify { subject[0][:yearly_total].should be_nil }
  specify { subject[0][:total].should be_nil }
end

这很好用。问题是,当我运行rspec --format documentation时,规格的可读性会受到影响:

...
first row
  should be_nil
  should be_nil
  should be_nil
...

我希望显示要检查的变量的名称 - 我不在乎是否必须手动将其作为字符串文字输入或者是否从代码中提取。我还想避免使用多行it块,因为断言非常简单。有办法吗?

specify "variable name" { variable.should be_nil }不起作用。

1 个答案:

答案 0 :(得分:1)

您可以使用its语法。

context "first row" do
  subject { your_object[0] }
  its([:monthly_total]) { should be_nil }
  its([:yearly_total])  { should be_nil }
  its([:total])         { should be_nil }
end

Doc here.


提示:要重复使用以前的subject,请为其命名!

subject(:my_model) { ... }

context "first row" do
  subject { my_model[0] }