RSpec,为什么我必须将我的主题放在lambda中以使其捕获异常?

时间:2013-11-19 17:33:40

标签: ruby exception rspec assertions

我不明白为什么要这么做:

subject { lambda { JenkinsClient.new(params.tap{|p| p.delete(:password)}) } }
it { expect { subject.call }.to raise_error(ArgumentError) }   

要使其捕获引发的异常,而不是:

subject { JenkinsClient.new(params.tap{|p| p.delete(:password)}) }
it { expect { subject }.to raise_error(ArgumentError) }   

有人可以提供这方面的见解吗?

1 个答案:

答案 0 :(得分:0)

这不是一个答案,但我想(通过格式化)显示以下工作正常,所以我认为您遇到的问题不存在一些基本的RSpec问题:

describe "Subject raising error" do
  subject {raise ArgumentError}
  it {expect {subject}.to raise_error(ArgumentError)}
end