はじめに
昨日に引き続き、Rspecの記事です!
rspec入門で知っておけばよさそうなこと #RSpec - Qiita
今回はユーザー操作を再現するテストについて。
capybara
ユーザー操作を再現するDSL のようです。
Rspecと組み合わせて使われることが多いですが、別のgemのようです。
DSLとは、プログラミング言語の中でも、特定の機能に特化したものですね。
他に、SQLやHTMLなどがDSLに分類されるはずです。
「ユーザー操作を再現する」とは?
例えば、click_on 'ログイン'
で、「ログイン」というテキストのボタンをクリックできるようです。
CSSのクラスで指定することも可能(find('.my-class').click
など)
スペックの種類
(記事としてはあまりにも短かったので)
スペックの種類をChatGPTに書いてもらいました。
スペックの種類 | 説明 |
---|---|
モデルスペック | データモデルの振る舞いをテストします。バリデーション、アソシエーション、カスタムメソッドなどのテストが含まれます。 |
コントローラスペック | コントローラのアクションが期待通りに動作するかをテストします。リクエストを送信し、レスポンスを検証することに焦点を当てます。 |
ビュースペック | ビューテンプレートが正しくレンダリングされるかをテストします。特定の要素が含まれているか、特定のレイアウトが適用されているかなどを検証します。 |
ヘルパースペック | ビューで使用されるヘルパーメソッドのテストです。メソッドが期待通りの出力を返すかどうかを検証します。 |
ルーティングスペック | アプリケーションのルーティングが正しく設定されているかをテストします。特定のURLが期待通りのコントローラとアクションにルーティングされるかを検証します。 |
メールスペック | アプリケーションから送信されるメールのテストです。メールが送信されるトリガー、メールの内容、送信先などを検証します。 |
リクエストスペック | エンドツーエンドでアプリケーションのAPIをテストします。コントローラスペックよりも広範なテストで、複数のコントローラやモデルを跨いだ処理を検証します。 |
システムスペック | エンドツーエンドのブラウザベースのテストで、ユーザーインターフェース全体を通じてアプリケーションが正しく機能するかを検証します。Capabaraを使用して実行されます。 |
フィーチャースペック | システムスペックに近いですが、Capabaraを使用してユーザーの視点からアプリケーションの特定の機能をテストします。RSpec 3.7以前ではよく使用されていました。 |