1

PUT と GET という 2 つの操作を持つエンドポイントを作成しました。GET は PUT されたものを取得するため、両方の動作を確実にする良い方法は、それらを順番にテストすることです。

私の cURL テストでは、サービスが機能することがわかりました。ただし、同じことを行うテストに合格することはできません!

it "accepts authenticated PUT data" do
    attributes1 = {
      user: {
        lat: '12.34',
        lng: '56.78'
      }
    }

    with_api(Location, { log_stdout: true, verbose: true }) do
      put_request({ query: { auth_token: 'abc' }, body: attributes1.to_json }) do |client|
        client.response_header.status.must_equal 201

        get_request({ query: { auth_token: 'abc' } }) do |client|
          client.response_header.status.must_equal 200
          client.response.must_match_json_expression([attributes1[:user]])
        end
      end
    end
end

PUT は本文で JSON を受け入れ、GET は JSON を返すことに注意してください。サービスは Redis をデータストアとして使用し、mock_redis を使用してそれをモックします。

test_helper.rb:

$redis = MockRedis.new

class Goliath::Server
  def load_config(file = nil)
    config['redis'] = $redis
  end
end

仕様のトップ:

before do
  $redis.flushdb
end

GET は単に PUT されたものを取得する必要がありますが、代わりに JSON "null" を取得します。

私は明らかに間違ったことをしていますか?おそらく、ボディデータをリクエストにどのように渡すのでしょうか?

私のテストが実行されているときに、より良いログを取得するのに間違いなく役立ちます. { log_stdout: true, verbose: true } オプションを試しましたが、それでも Goliath サーバーからの基本的な INFO ログしか出力していないようで、データとパラメーターについては何も教えてくれません。

どんな助けでも大歓迎です!

4

0 に答える 0