TECH CAMP 21日目 日曜日も進めてゆく

自分用のアウトプット。

結合テストコードについて。

画像が表示されている要素の取得
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に入り、また新しいアプリケーションを作っていくようです。
大丈夫かな。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする