RSpec基礎:セットアップ,命名および基本構造
ときにプログラミングを起動すると、それをテストする方法を知って簡単ではない、どのようにテストするには、なぜあなたがテストする必要があります?TDD(Test Drive Developmentのような)がベストプラクティスです.しかし、最初に、あなたがそれを書く前にあなたのコードが何をすべきか知るのは難しいです.
テストは、その可能性を明らかにする練習を必要とします.
私がプログラミングを始めたとき、私は他の人々のテストをコピーします.しかし、しばらくして、私のテストは、エッジケース、私が見落とした潜在的なバグを明らかにするだろう.
それで、私は一連の短いノウハウを知っていて、whatsを知っていて、whatsを知っていて、新参者にいくらかの使用でありえました;rspecを用いたテストの一側面を説明する簡潔なエッセイ
これはあなたに楽しく聞こえる場合は、基本から始めましょう.
rspecとは
まず最初に、明らかな質問から始めましょう.
RSpecはRubyコードをテストするためにRubyで構築されたテストフレームワークです.それはあなたのプログラムの動作をテストすることに焦点を当てています.何が起きるのだろうか.
そこで利用可能ないくつかのテストフレームワークの一つです.また、あなたはminitestを知っているかもしれません.
アプリケーションへのrspecの追加
RSpecチームは、簡単にRailsアプリケーションでフレームワークを使用するように、宝石を維持します.
まず、gemfileにrspecを追加します.
rspecファイルの命名
rspec命名規約は簡単です.
Specフォルダのアーキテクチャ
RSpecとRailsが一緒にスムーズに動作するようにするには、あなたの
など. キャッチは1つだけです. コントローラをテストするために、フォルダの構造は以下の通りです.
rspecファイルの構造
我々がテストしたいと言いましょう
しかし、今、私たちは、私たちは何が起こっているのより良い理解を得るように、各要素に掘るしたいと思います. 以下のコードはthe RSpec repository .
私はこれらの説明をどのようにrspecの作品のより良い理解を与える願っています.次回は最初のテストを書きます.
何か気づいた?or create an issue on GitHub .
歓声
レアミー
それを指摘してくれてありがとう!↩
テストは、その可能性を明らかにする練習を必要とします.
私がプログラミングを始めたとき、私は他の人々のテストをコピーします.しかし、しばらくして、私のテストは、エッジケース、私が見落とした潜在的なバグを明らかにするだろう.
それで、私は一連の短いノウハウを知っていて、whatsを知っていて、whatsを知っていて、新参者にいくらかの使用でありえました;rspecを用いたテストの一側面を説明する簡潔なエッセイ
これはあなたに楽しく聞こえる場合は、基本から始めましょう.
rspecとは
まず最初に、明らかな質問から始めましょう.
RSpecはRubyコードをテストするためにRubyで構築されたテストフレームワークです.それはあなたのプログラムの動作をテストすることに焦点を当てています.何が起きるのだろうか.
そこで利用可能ないくつかのテストフレームワークの一つです.また、あなたはminitestを知っているかもしれません.
アプリケーションへのrspecの追加
RSpecチームは、簡単にRailsアプリケーションでフレームワークを使用するように、宝石を維持します.
まず、gemfileにrspecを追加します.
# Gemfile
gem "rspec-rails", group: [:development, :test]
宝石をインストールします. bundle install
足場rspecの設定とアプリケーションのテストフレームワークをrspecに切り替えます. rails generate rspec:install
さて、あなたの移動を実行し、テストデータベースを準備します. rails db:migrate && rails db:test:prepare
そら!さて、入力してテストを実行することができますrspec spec
あなたのシェルで.spec
テストファイルを作成するフォルダです.rspecファイルの命名
rspec命名規約は簡単です.
users_controller.rb
はusers_controller_spec.rb
user.rb
はuser_spec.rb
user_notification_job.rb
はuser_notification_job_spec.rb
Specフォルダのアーキテクチャ
RSpecとRailsが一緒にスムーズに動作するようにするには、あなたの
app
フォルダ. my_app_directory
|
|- app
| |
| |- models
| |
| |- user.rb
|
|- spec
|
|- models
|
|- user_spec.rb
app/models/user.rb
はspec/models/user_spec.rb
app/serializers/admin/book_serializer.rb
はspec/serializers/admin/book_serializer_spec.rb
app/controllers/users_controller.rb
はspec/requests/users_controller.rb
. RSPECチームは、あなたに使用を拒否しますspec/controllers
. なぜ?テスト要求は、スタック(ルーティング、要求、応答など)を介してコントローラの動作の動作をテストすることができます1 . my_app_directory
|
|- app
| |
| |- controllers
| |
| |- users_controller.rb
|
|- spec
|
|- controllers ❌
|
|- requests
|
|- users_controller_spec.rb
rspecファイルの構造
我々がテストしたいと言いましょう
User
モデル.ファイルの構造は次のようになります. # spec/models/user_spec.rb
require 'rails_helper'
RSpec.describe User do
# test stuff
end
そら!セットアップが完了しました.しかし、今、私たちは、私たちは何が起こっているのより良い理解を得るように、各要素に掘るしたいと思います.
require 'rails_helper'
rspecの設定を読み込みます.rails_helper.rb
はspec
フォルダ.RSpecはボックスのように心配する必要はないので構成されています.RSpec
はすべてのrspecコードのコアモジュールです.それをカプセル化し、多くの物事をインスタンス化する:構成、期待、例など、コードをチェックアウトすることができますhere . .describe
はRSpec
モジュールです.それは、一般的な抽象化のまわりであなたのテストを分類します:クラス、要求などUser
モデル. def self.expose_example_group_alias(name)
return if example_group_aliases.include?(name)
example_group_aliases << name
(class << RSpec; self; end). __send__ (:define_method, name) do |*args, &example_group_block|
group = RSpec::Core::ExampleGroup. __send__ (name, *args, &example_group_block)
RSpec.world.record(group)
group
end
expose_example_group_alias_globally(name) if exposed_globally?
end
メタプログラミング的なビットのために読むのは少し難しいです、しかし、主な考えはそれが.describe
インスタンスメソッドRSpec::Core::ExampleGroup
テストしている抽象化のクラスUser
) そして、あなたが引数として書いたテスト.User
クラスはテスト中です.それは、議論として渡されます.describe
メソッド.do ... end
あなたがテストを書いているブロックです.これらは.describe
メソッド&example_group_block
上記).何か気づいた?or create an issue on GitHub .
歓声
レアミー
Reference
この問題について(RSpec基礎:セットアップ,命名および基本構造), 我々は、より多くの情報をここで見つけました https://dev.to/mercier_remi/rspec-fundamentals-setup-naming-and-basic-structure-198aテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol