RSpecでエラーを発生させたいのにnothing was raisedと出る
システムをrubyのバージョンをアップ(ruby 1.9.2p320⇒2.2.3)しました。Railsのバージョンは3.2.19 DBはMySQLを使用しています。
テストを実行したところエラーが発生し以下のようなエラーが発生しました。
Failures:
1) …の場合は、 そのまま例外をraiseする。
Failure/Error: lambda{Job.find_by_id(@conn, 0)}.should raise_error(ex)
expected Unauthorized but nothing was raised
プロダクトコードは以下のようでテストでmrqを実行したときに任意のエラーを発生させようとしてます。
def self.find_by_id(conn, id)
options = {…}
response = Job.mrq(conn, options)
テストコードです。
before(:each) do
Job.should_receive(:mrq).and_raise(ex)
end
context "…の場合は、" do
let(:ex){SomeError.new("Unauthorized", 401)}
it "そのまま例外をraiseする。" do
lambda{Job.find_by_id(@conn, 0)}.should raise_error(ex)
end
end
rspec (2.11.0)を使用してます。ruby 1.9.2では動作していました。