3

レールのアクションが正しいテキストを返していることをテストする標準またはベストプラクティスの方法はありますか? たとえば、次のことを行う ajax 検証を行うために使用される単純なアクションがあります。

def get_object_id
  if params[:id].blank?
    return render(:text => -1, :layout => false)
  end

  my_object = MyObject.find_by_id(params[:id].strip)

  # If the object is valid return the object id
  if my_object and my_object.active?
    return render(:text => my_object.id, :layout => false)
  end

  # Otherwise, return -1
  return render(:text => -1, :layout => false)
end

現在、テストで @response オブジェクトを使用しています...つまり:

def test_get_object_id_returns_invalid_for_non_existent_id
  # Act
  get :get_object_id, :id => 999

  # Assert
  assert_response :success
  assert_equal "-1", @response.body
end

しかし、私がこれまでに見てきたことは、ほとんどが Rails に慣れていないことですが、チェックする以外に、おそらくこれを行うためのより良い方法があることを示唆しているようです@request.body

そこで、Ruby の専門家の皆さんに質問します。これが最善の方法ですか?

4

1 に答える 1

3

私はあなたのスポットがすでにあると思います。

assert_select実際には XML コンテンツに対してのみ機能するため、他のフォーマットについては独自に作成する必要があります。ActionController::TestCaseもし私がこれらをたくさんやっていたら、おそらく名前付きアサーションメソッドを追加するでしょう。

例えば

def assert_response_equals(v)
  assert_equal v.to_s, @response.body, "Expected response body to be #{v.inspect}"
end

これにより、引用符をスキップできます。

于 2009-10-01T19:15:12.393 に答える