Railsアプリとは別に開発されている(Sinatraアプリ)APIにヒットするRailsアプリについて考えてみます。Railsテスト内からAPI呼び出しをテストしたいと思います。
APIコード:
post '/foo/create' do
...
モックを作成しましたが、APIファイルのコピーであるため意味がありません。くさいです。
テストでAPIファイルを要求することが可能です。しかし、RSpecからそれを呼び出す方法は?Railsアプリにはそのためのルートはありません。
1つのオプションは、APIを開始し、RailsテストからHTTP呼び出しを行うことですが、これは次の理由で臭いです。
- Railsテストを実行するには、APIサーバーを起動する必要があります
- RailsテストでHTTPリクエストを行う必要があるのはなぜですか?Rack::Testはこれをシミュレートします。
- アプリには異なるテストデータベースがありますが、同じ本番データベースを共有しているため、これは機能しないと思います。
編集:テストのポイントは、API呼び出しがRailsアプリが期待しているレコードを作成することです。そのため、Railsアプリは、API呼び出しが行われた後にデータベースの状態をテストする必要があります。