Ruby on Rails開発のインターン (Day 15)
こんにちは、皆さん!
今日もまた天気のいい日。今日はcapybaraテストのシンタックスを勉強して、本題に入れるようにがんばる。
- トピック:
- 疑問:
- 問題:
- グーグルマップにおいて、capybaraでマーカーをクリックする
- 学習した内容:
- どうやって簡単なcapybaraテストを書くか
- 今後やってみたいこと:
- capybaraでスクショをとる
- リソース:
Capybaraテストの基本フレーム
capybaraテストに関するビデオチュートリアルを発見(残念ながら、英語版)。それの内容を参考に下記が基礎的なフォームになる。
# spec/features/test_spec.rb require 'rails_helper' RSpec.feature "test" do scenario "test whether you can write out a proper test" do # your code here end end
実際のテストに入る前にrails_helper
する必要がある。 それと、通常、capybaraテストはspec/features
フォルダー内でファイルを作り、そこに書いていく。
いくつかの基礎的なcapybaraテストのシンタックス
https://github.com/Eric1015/capybara-post-test
それで、書いたコードは下記のもの:
# spec/features/posts_controller_spec.rb require 'rails_helper' RSpec.feature "adding post" do scenario "allow a user to add a post" do #パート1 visit posts_new_path #パート2 fill_in "Title", with: "Rspec Introduction" fill_in "Body", with: "This is my post about Rspec" #パート3 click_on("Create Post") #パート4 expect(page).to have_content("Rspec Introduction") expect(page).to have_content("This is my post about Rspec") end end
さあ、掘り下げていきましょう!!
最初に、visit posts_new_path
はその名の通り、 指定したURLに行くってこと。この場合、/posts/new
になる。
下の写真はこのページのスクショ。
見ての通り、"Title"と"Body"の2つのインプットがある。
次の部分はその2つのインプットに"Title"には"Rspec Introduction"を、そして、 "Body"には"This is the first post about Rspec"を入れる。これはつまり、下の写真通りのことを自動でやってくれるってこと。
そして、3つ目のパート、click_on("Create Post")
は"Create Post"というボタンを押してくれる。これはインプットした情報をもとに新しい投稿を作る(ポストというモデルを使用しているため)。その後、showアクションをとるようにしているため、 下記のような結果になる。
そして、最後のパート。ここで、初めてテスト(ここまではcapybaraにユーザーが実際に投稿を作る一連の操作をさせただけ)。テストの内容は今現在のページに2つのものが存在すること。それは、"Rspec Introduction"というテキストと"This is my post about Rspec"というテキスト。そして、確かにshowのページにこれらがあるため、無事にテストは成功という結果になる。
まとめ
とりあえず、明日は次のステージであるマップ内のマーカーのクリック方法を探っていこうと思う。早く方法を見つけれることを願う!
ご精読ありがとうございました。では、また次回まで✌