Rails 3レイアウトでロジックをテストする最良の方法は何ですか?
例:ユーザーが私のサイトにサインインしたときに、オンボーディングプロセスを完了していない場合は、すべてのページの画面上部にアラートを表示します。このロジックは、アプリケーションレイアウトに配置されました。ログインしているユーザーの特定のキーを確認するだけです。キーが存在しない場合は、アラートを表示します。キーが表示されるとすぐに(つまり、オンボーディングが完了したことを意味します)、アラートは表示されません。
現在、ビューテストでこれを実行しようとしていますがActionView::Template::Error: undefined method
、アプリケーションレイアウトを含めることで、nil:NilClass`エラーに対してあらゆる種類の認証を取得しており、この機能をテストできないようです。
何らかの理由で開発者の1人が誤ってこの機能を壊した場合(オンボーディングで表示されるビューが完全ではない場合)、ビルド直後に知る必要があるため、これをテスト中であることを確認する必要があります。
レイアウトでテストしようとしているコードは次のようになります。
<% if user_signed_in? %>
<% unless current_user.has_completed_onboarding? %>
<div class="alert">
You cannot accept payments from your clients until you set up your payment gateway.
<%= link_to "Set up your", payment_gateway_path %> payment gateway. Its quick, we promise. :)
</div>
<% end %>
<% end %>
オンボーディングの詳細が提供されていない場合はこのメッセージが表示され、提供されている場合はこのメッセージを表示しないようにしたいと思います。