3

結果がエラーをスローすると予想されるテストを作成しました。

it{ Authentication.create_with_omniauth!(nil, nil).should raise_error }

結果は確かにエラーになりますが、検証は失敗します。どうやらエラーを吐いているようです。:)

2) Authentication methods: self.create_with_omniauth!: with bad input 
     Failure/Error: it{ Authentication.create_with_omniauth!(nil, nil).should raise_error }
     ArgumentError:
       ArgumentError
     # ./app/models/authentication.rb:13:in `create_with_omniauth!'
     # ./spec/models/authentication_spec.rb:69:in `block (5 levels) in <top (required)>'

それで?どのようにエラーをテストしますか?

4

2 に答える 2

3

expect {}.to raise_error構文を使用する必要があります

expect { Authentication.create_with_omniauth!(nil, nil) }.to raise_error

また

lambda { Authentication.create_with_omniauth!(nil, nil) }.should raise_error

Rspec 1.XX を使用する場合

ドキュメントをチェックアウト

https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers/raise-error-matcher#expect-any-error

http://rspec.rubyforge.org/rspec/1.2.9/classes/Spec/Matchers.html#M000176

于 2012-12-26T17:25:43.143 に答える
0

私は omniauth の経験がありませんが、このような機能はありますか?

describe "authentication" do
  context "when nil" do
    let(:nil_authentication) { Authentication.create_with_omniauth!(nil, nil) }
    subject { -> { nil_authentication } }
    it { should raise_error }
  end
end
于 2012-12-27T14:23:10.230 に答える