0

run のコールバックをテストする必要がありますがbefore_validation、コールバックのみをテストしたいので、検証が失敗したときにテストを失敗させたくありません。現時点では次のようになります。

ActiveRecord::RecordInvalid:
       Validation failed: Preview Invalid video ID

いろいろ試してきました。.save(:validate => false)で実行されるため、使用時にコールバックメソッドが呼び出されないと思いますbefore_validation

しかし、私がこのようなことをすると:

show = FactoryGirl.build :show
show.should_receive :parse_url
show.save

私は得る

Failure/Error: show.should_receive :parse_url
   (#<Show:0x007fd9954699e0>).parse_url(any args)
       expected: 1 time
       received: 0 times

モデル内の私のコードにもかかわらず:

before_validation :parse_url, :on => :save

また、メソッド呼び出しのほかに、フィールドがフォーマットされた後にフィールドを確認したいと考えています。

どんな助けにもとても感謝します。

4

1 に答える 1

0

ActiveRecord::RecordInvalid エラーが発生したときにいつでもキャッチできますが、それでも before_validation の動作をテストできます。エラーをキャッチするので、RSpec テストは失敗しません。

于 2012-06-14T19:46:45.350 に答える