を動作しません。 2番目の仕様はexpecting <"new"> but rendering with <"">
で失敗します。 valid?
がtrueを返した場合のようにリダイレクトされます。RSpecのスタブは、私は、コントローラのメソッドをテストするには、以下のスペックを持っている
私はRailsの世界では初めてです。私は何が欠けていますか?ありがとう。
を動作しません。 2番目の仕様はexpecting <"new"> but rendering with <"">
で失敗します。 valid?
がtrueを返した場合のようにリダイレクトされます。RSpecのスタブは、私は、コントローラのメソッドをテストするには、以下のスペックを持っている
私はRailsの世界では初めてです。私は何が欠けていますか?ありがとう。
オブジェクトを保存するとき、Railsはクラスのインスタンスにvalid?
を呼び出します。しかし、クラスそのものにvalid?
をスタブしました。それは動作しません。
あなたがここでしたいのは、のスタブsave
インスタンス、保存中のユーザーのなどです。 、再び
User.stub(:new) { mock_model(User, :save => false) }
@user = User.new
#:
User.stub(:new) { mock_model(User, :save => true) }
@user = User.new
#1 @userは現在
@user.save
#モックオブジェクトは、他の例えばtrue
を返すモックオブジェクトであります@userはモック
@user.save
#モックオブジェクトは、インスタンス先端のためのfalse
OMGのおかげを返します!それが問題でした。私は、 'valid? 'のような低レベルのメソッドをスタブするほうが良いと思います。このようにして、機能とテストを破ることなく 'save'から' build'& 'create'にアクションをリファクタリングすることができます。これは当然のことではありません。今私はユーザーの 'User.any_instance.stub(:valid?)and_return(true)'のすべてのインスタンスにスタブを付けて解決しました。しかし、インスタンスとクラスのあなたのヒントは、私が一般的に見逃したものです。 – paulus
「保存」の代わりに「有効」をスタブする限り、私は正反対の主張をしたいと思います:)リファクタリングについてのあなたの意見は良いものですが、ActiveRecordがリファクタリングされた場合はどうなりますか?後で 'save'が' valid? 'を呼び出さなくなりましたか?今では、あなたがコントロールしていないライブラリの内部実装のためにテストが中断します。 – zetetic
Dev/Testでテストする前に、ProductionでActiveRecordを切り替えることはほとんどありませんか? :)開発/テストでは、テストがこの時点から失敗するため、明らかになります。だから、私たちはいつでもチェンジログや何か理由を見つけ出すことに関連することができます。私の見解では、アプリケーションクラスはコアクラスよりリファクタリングされる可能性が高いです。 – paulus