0

ここ数日、Rails でのテストに関するドキュメントを静かに読んでいました。最初の実際のテストを書くために座っていますが、学んだことをどのように結び付けて次の機能テストを達成するか 100% 確信が持てません (コントローラのテスト)

URL に GET リクエストを送信し、3 つのパラメーター (単純な Web サービス) を渡す必要があります。機能が機能する場合はtrue、キーワードが返されるだけです。それ以外の場合は、キーワードがfalse返されます<div><span>タグ。

テストは、「true」が返された場合、テストが成功したことをアサートする必要があります。

これはおそらく非常に単純なので、そのような挑戦的ではない質問をお詫びします.

始める方法、特に応答をテストする方法について誰かが私を書く方向に向けることができれば、とても感謝しています!

4

2 に答える 2

1

Railsアプリケーションのテストガイドを読みましたか? かなりいい。

テストはおそらく次のようになります。

def test_should_get_index
  get :index, :a => "1", :b => "2", :c => "3"
  assert_response :success
  assert_equal "true", @response.body
end
于 2010-05-19T03:36:47.777 に答える
0

独自のアプリケーションのテストである場合、好みに応じて機能テストまたは統合テストとしてこのようなことを行うことができます。統合テストは、特定のコントローラー アクションを単純に実行する機能テストとは異なり、実際の URL とルートを使用するという点で、より「現実的」です。

外部サービスの場合、Test::Unit や、​​rspec や Cucumber などの別のフレームワークをテスト定義のラッパーとして利用するだけで十分です。

この GET リクエストを行うメソッドをある種のクラスで定義し、それをテストするハーネスを作成します。例えば:

def test_expected_response
  assert_equal 'true', MyHelper.make_call('param_a', 'param_b', 'param_c')
end

MyHelper と MyHelper.make_call が適切に定義されていない限り、明らかにこのテストは失敗しますが、それほど難しくありません。

class MyHelper
  def make_call(a, b, c)
    # Call service using Net::HTTP, Curb, etc.
    # ...
    # Return answer
  end
end
于 2010-05-19T03:37:32.987 に答える