自分用のアウトプット。
結合テストコードについて。
画像が表示されている要素の取得
HTMLを見ると<div class=”content-post” style=”background-image: url(〜〜);”>
となっているので、
expect(page).to have_selector “.content_post[style=’background-image: url(#{@tweet_image});’]”
のように記述する。
have_selector(マッチャ)
指定したセレクタが存在するかどうかを判断する。
have_link(マッチャ)
a要素に対して使う。
expect(“要素”).to have_link ‘ボタンの文字列’, href: “リンク先のパス”
で、要素の中にあてはまるリンクがあることを確認できる。
have_no_link(マッチャ)
↑の逆。あてはまるリンクがないことを確認する。
all
all(“クラス名”)で、pageに存在する同名のクラスを持つ要素をまとめて取得できる。
all(“クラス名”)[0]のように、添字を加えると「◯番目の”クラス名”のクラス」を取得できる。
find_link().click
a要素で表示されているリンクをクリックするために使う。
find_link(“リンクの文字列”, href: “URL〜〜”.click という形で記述。
サポートモジュール
RSpecに用意されている、メソッド等をまとめる機能。
supec/supportというディレクトリを作り、その中にsign_in_suppert.rbを作る。
def sign_in(user)
#処理
end という感じに記述していく。
サポートモジュールを読み込めるようにするために
①rails_helper.rbのコメントアウトを外す
Dir[Rails.root.join(‘spec’, ‘support’, ‘**’, ‘*.rb’)].Sort.each { |f| require f } という記述が初めからコメントアウトになっているので、それを外す。
②モジュールを設定する
RSpec.configure do |config| と記述してある中に
config.include SignInSupport という記述を追加する
各テストコードの #ログインする の部分を
sign_in(@user) または必要に応じて sign_in(@tweet1.user) などと変えていく。
テストコードはとりあえずこんなところ。
つぎ、ChatAppというチャットアプリケーションを作っていきます。
実装する機能
・写真付きメッセージ投稿機能
・チャットルーム作成機能
・ユーザー管理機能
一人のユーザーは複数のチャットルームに属し、
一つのチャットルームは複数のユーザーを持つ(多対多の関係)
多対多の関係では、has_many :モデル, throughと記述していく。
photo.rb
has_many :photos_tags
has_many :tags, through: :photos_tags
tag.rb
has_many :photos_tags
has_many :photos, through: photos_tags
photos_tags
belongs_to :photo
belongs_to :tag
ここまで!
テストコードは、練習問題で死ぬほど書かされたから、なんとなく分かってきた感じ。
でもhave_selectorのところは書き方が未だにあやふや…。
新しいLessonに入り、また新しいアプリケーションを作っていくようです。
大丈夫かな。