1

名前付きウィジェットのリストがあるとします。テストコードのどこかで、それを確認したい

widget = FactoryGirl.create(:widget)
get :index

文字列 #{widget.name} をどこかに含むページを生成します。

私の質問: これをコントローラ テストまたは統合テストとして記述しますか?

(余談 #1: これは、どのビューがレンダリングされるかについての知識を前提としているため、コントローラー テストの範囲外のように見えます。しかし、単一の要求/応答トランザクションしか必要としないため、統合テストとして記述するのは重すぎるように感じます。)

(#2 はさておき、私の一般的な質問は、「コントローラー テストと統合テストの内容をどのように決定するのですか?」ですが、これはスタック オーバーフローの質問としては広すぎることは間違いありません。)

4

2 に答える 2

1

時々、Stack Overflow が RTFM バッジを授与するべきだと思うことがあります。

さらに掘り下げてみると、RSpec は、レンダリングされた内容をテストするために特別に設計された「ビュー スペック」をサポートしていることがわかりました。

テストは spec/views/ に記述されます。 ドキュメントと例はここにありますが、RSpec の現在のバージョンのドキュメントを必ず確認してください。

于 2012-09-18T08:27:26.363 に答える
0

これらのさまざまなカテゴリのテストについて、普遍的に合意された定義があるとは思いませんが、個人的にはこれを「リクエスト仕様」と呼んでいます。これは一種の統合テストですが、単一のリクエスト/レスポンス サイクルのみを含むものです。MVC アーキテクチャのすべての要素が含まれているため、コントローラー テスト以上のものであることは明らかです。一方、クリックしてボタンを見つけたり、クリックしたりするわけではないので、私が通常「統合テスト」と考えるものではありません。

私が「要求スペック」と呼ぶものと、通常「統合テスト」と呼ぶものを区別する簡単な方法の 1 つは、get(ActionDispatch から) とvisit(カピバラから) を使用することです。get(など)のみを使用している場合post、それはリクエスト仕様です。使用している場合visit、それは統合テストです。

getとの違いの詳細については、次のvisit投稿を参照してください: http://blog.plataformatec.com.br/2012/06/improving-the-integration-between-capybara-and-rspec/仕様/要求を完全に取り除き、仕様/API (「要求仕様」と呼ぶもの) と仕様/機能 (「統合テスト」と呼ぶもの) に置き換えます。

とにかく、私が上に書いたことは、この区別を私自身の個人的な方法で見たにすぎないことに注意してください.他の人は同意しないかもしれません.

于 2012-09-18T07:21:05.507 に答える