Rspecの仕様のほとんどを作成しましたが、1つの重要な問題に直面しています。すべてのルートにルーティング制約を設定しました(それ自体は議論の余地があるかもしれません)。Ipアドレス(別のIpAddressモデルに保存されている)を許可した管理者のみが、アプリケーションの特定の領域にアクセスできます。
簡単に言うと、仕様内のすべてに自由にアクセスできるように、制約モデルをモックまたはスタブしたいと思います。
私の制約は次のようになります。
class IpAddressConstraint
def initialize
@ips = IpAddress.select('number')
end
def matches?(request)
if @ips.find_by_number(request.remote_ip).present? || Rails.env.test? #<- temporary solution
true
else
if @current_backend_user.present?
backend_user_sign_out
else
raise ActionController::RoutingError.new('Not Found')
end
end
end
end
MyApp::Application.routes.draw do
constraints IpConstraint.new do
#all routes
end
end
Rspecでこのルーティング制約をテストするための最良の方法は何ですか?現在、条件を追加したので、テスト環境にいる場合は、これらの制約を完全にスキップできます。どういうわけかこの制約をシミュレートできればもっと良いでしょう。