2012-05-02 15 views
0

私はjsonベースのメソッドをテストしています。このメソッドはjson配列リストを取ります。このメソッドは、json配列がシーケンシャルな順序で入っていて、配列がランダム化されているときに途切れたときに正常に機能します。ランダム化されたすべてのケースで失敗するわけではありません。だから、失敗するとjson配列の値を保存したい。それを行う方法はありますか?Rspec:失敗時にインスタンス変数の値を保存する

describe 'when the flat hash comes in random order' do 
    it 'knows how to create the parent nodes first' do 
    do_stuff_and_validate(@flat_hash[:nodeList].shuffle!) 
    end 
end 

答えて

1

カスタムマッチャーを定義して、失敗メッセージを上書きして、必要なものを表示することができます。

RSpec docsからコピーされ、次の例:

require 'rspec/expectations' 

RSpec::Matchers.define :be_a_multiple_of do |expected| 
    match do |actual| 
    actual % expected == 0 
    end 
    failure_message_for_should do |actual| 
    "expected that #{actual} would be a multiple of #{expected}" 
    end 
end 

# fail intentionally to generate expected output 
describe 9 do 
    it {should be_a_multiple_of(4)} 
end 
+0

カスタムマッチャーはローカル/インスタンス変数にアクセスできますか? –

+1

はい、それを引数としてマッチャーに渡した場合です。 – zetetic

0

この配列をファイルに書き込んで、後で検査することができます。

0

私が始まる・レスキューリレイズのトリックを使用していました。

begin 
    # The assertions 
rescue Exception => e 
    pp @flat_hash 
    raise e 
end 
関連する問題