前提
- rspec
- rails
でテストを書いているのですが、stagingでのみ実行するテストを書きたいと考えています。どう書けばいいでしょうか?
APIのテストでwebhookを無事受け取れるかをテストしたいと考えており、受け取れるstagingでテストしようと考えています。(localでは受け取れないため
実現したいこと
- stagingでのみ実行するテスト
- 他の環境では実行されない
通常、テストの際は RAILS_ENV=test になると思うのですが、 RAILS_ENV=staging でテストを実行したい理由は何でしょうか?
以下のように RAILS_ENV の値によって分岐するコードをテストしたいとかですか?
(例)
module FooHelper
def foo
if Rails.env.staging?
"ステージング環境です!"
else
"その他の環境です!"
end
end
end
APIのテストでlocalではwebhookを受けれないため、受け取れるstagingでテストしたいと考えています!
API のテストなら、単に Request spec を書いても良いのかなと思うのですが、それじゃ解決できない問題がある感じですか?
it "webhook を受け取ったら xxxxx すること" do
expect(...).to receive(:xxxxx)
post "/api/webhook", params: { "foo" => 123, "bar" => 456 }
end
APIのレスポンスを確認したいのですが、受け取れるのが特定のドメインからでないと受け取れずlocalではできなくて。。。
なるほどです。
ちょっと考えてみます。
