irodimazak

!= '主に日々学んだ事を書き留めます。'

SystemSpecについて

Rspecでテストを書くに当たって今回はSystemSpecを使って書いていく事にしました。

SystemSpecとは

Rspecの機能の名称である。
featurespecは書いた事あるんだけど、その時からテストは書けるけどRspecとfeaturespecの違いって何だろうぐらいに思ってました。
ここでまとめてみようと思う、featurespecもRspecの機能の名前である。
なんかこの辺検索してもいい感じの表現で書いてある記事がヒットしない、
きっとみんな何となく使ってるんだろうな。
Rspecとはテスティングフレームワークでtest版Railsみたいな物だと思う。
その中で使える機能って事です。
話は戻って、SystemSpecはfeaturespecと何が変わったかと言うと、

  • デフォルトでselnium-webdriver + Chrome上でテストが実行される。

    selnium-webdriver
    ブラウザの操作を自動化するためのツールだったり、ライブラリだったりする物

  • DatabaseCleanerやDatabaseRewinderを使ってトランザクション管理をする必要がない。
    今まではgem 'database_cleaner'などを入れないとどんどんデータベースにテスト用のデータが作成されてしまうが、SystemSpecより不要になった。

  • テストが失敗すると自動的にtmp/screenshotsディレクトリにスクリーンショットを保存してくれる。
    これはcapybaraを書いていくと内部的な処理を考えながら書いていくので、失敗した時に視覚的にどのページで作業が止まったのか確認し安くなったのは良い事だと思う。

現役のエンジニアさんが、『今ではfeaturespecは使っていなくてsystemspecになっている。』と言っていたので現場レベルでも主流になって行ってるんだな、実際便利だしね。
テストはcapybaraを使って書くことは慣れてきたし、これからはテスト構文、describeやcontentとか意識して何のテストかしっかり定義できるように書いていく事も覚えて行かなくてはいけないな。