Ruby on Rails開発のインターン (Day 15)

こんにちは、皆さん!

今日もまた天気のいい日。今日はcapybaraテストのシンタックスを勉強して、本題に入れるようにがんばる。


  • トピック:
  1. Capybaraテストの基本フレーム
  2. いくつかの基礎的なcapybaraテストのシンタックス


  • 疑問:


  • 問題:
  1. グーグルマップにおいて、capybaraでマーカーをクリックする


  • 学習した内容:
  1. どうやって簡単なcapybaraテストを書くか


  • 今後やってみたいこと:
  1. capybaraでスクショをとる


  • リソース:
  1. Ruby for Newbies: Testing Web Apps with Capybara and Cucumber - YouTube


Capybaraテストの基本フレーム

リソース:Ruby for Newbies: Testing Web Apps with Capybara and Cucumber - YouTube

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になる。
下の写真はこのページのスクショ。
f:id:Coding_Studio:20180725044212p:plain
見ての通り、"Title"と"Body"の2つのインプットがある。


次の部分はその2つのインプットに"Title"には"Rspec Introduction"を、そして、 "Body"には"This is the first post about Rspec"を入れる。これはつまり、下の写真通りのことを自動でやってくれるってこと。
f:id:Coding_Studio:20180725044611p:plain


そして、3つ目のパート、click_on("Create Post")は"Create Post"というボタンを押してくれる。これはインプットした情報をもとに新しい投稿を作る(ポストというモデルを使用しているため)。その後、showアクションをとるようにしているため、 下記のような結果になる。
f:id:Coding_Studio:20180725044840p:plain


そして、最後のパート。ここで、初めてテスト(ここまではcapybaraにユーザーが実際に投稿を作る一連の操作をさせただけ)。テストの内容は今現在のページに2つのものが存在すること。それは、"Rspec Introduction"というテキストと"This is my post about Rspec"というテキスト。そして、確かにshowのページにこれらがあるため、無事にテストは成功という結果になる。
f:id:Coding_Studio:20180725045728p:plain

まとめ

capybaraテストの基礎を学べていい感じになったので、本題に入り、capybaraを書いていこうと思った。でも、それで始めて見ると、なぜか職場のプログラムではcapybaraテストが実行されなかった。何時間か原因解明に努めたが結局はわからず。
とりあえず、明日は次のステージであるマップ内のマーカーのクリック方法を探っていこうと思う。早く方法を見つけれることを願う!


ご精読ありがとうございました。では、また次回まで✌



Day 16はこちら↓↓
programming-shop.hatenablog.com


Day 14はこちら↓↓
programming-shop.hatenablog.com