0

Railsアプリとは別に開発されている(Sinatraアプリ)APIにヒットするRailsアプリについて考えてみます。Railsテスト内からAPI呼び出しをテストしたいと思います。

APIコード:

post '/foo/create' do
  ...

モックを作成しましたが、APIファイルのコピーであるため意味がありません。くさいです。

テストでAPIファイルを要求することが可能です。しかし、RSpecからそれを呼び出す方法は?Railsアプリにはそのためのルートはありません。

1つのオプションは、APIを開始し、RailsテストからHTTP呼び出しを行うことですが、これは次の理由で臭いです。

  1. Railsテストを実行するには、APIサーバーを起動する必要があります
  2. RailsテストでHTTPリクエストを行う必要があるのはなぜですか?Rack::Testはこれをシミュレートします。
  3. アプリには異なるテストデータベースがありますが、同じ本番データベースを共有しているため、これは機能しないと思います。

編集:テストのポイントは、API呼び出しがRailsアプリが期待しているレコードを作成することです。そのため、Railsアプリは、API呼び出しが行われた後にデータベースの状態をテストする必要があります。

4

1 に答える 1

1

良い。あなたにとって完璧な答えは、webmockのように答えをモックする gem です。その URL にアクセスすると偽の応答が返されるため、テストでは、アプリは実際と同じように要求を行います。ただし、Web にアクセスする前に、モックにヒットし、目的の回答で応答します。

于 2012-12-04T18:15:39.830 に答える