rspec 結合テスト expected: "/" got: "/users/sign_in"
expected: "/" got: "/users/sign_in"
結合テスト実行時に”こんなエラーが出た”
" got: "/users/sign_in"なので、サインインページでログインがうまくいっていないと推察し、見に行くもわからず。。。
そこでログインができない理由を洗い出す。
・バグがあってログインができない
・テスト用のアカウントがデータベースに登録できていない
・行っているフォームが正しくない
テスト用のアカウントは登録できているのでクリア!
そこでフォームの見直しをし調べれてるの下記のサイトに辿り着きコード修正し、実行できました。
Rails でトークアプリの作成手順 #結合テストコード | hideo blog
expect(current_path).to eq root_path
expect(
find(".user_nav").find(span).hover
). have_content("ログアウト")
expect(page).to have_no_content("新規登録")
expect(page).to have_no_content("ログイン")
↓上記コードを削除し、下記コードに変更しエラー解決しました。
click_on("Log in")
if else文 ポイント付与サービスを考える
if else文 ポイント付与サービスを考える
【ECサイトのポイント付与サービス】
"ポイントはx点です。"と出力したい。
購入金額が999円以下の場合、3%のポイント
購入金額が1000円以上の場合、5%のポイント
ただし誕生日の場合はポイントが5倍になります。
誕生日の場合はtrue, 誕生日でない場合はfalseで表します。
また、小数点以下をすべてのポイント計算が終わったあとに切り捨てる。
1.2〜6行目で999円以下と1000円以上のtrueの処理を行う。
2.そして、購入金額に対して0.03と0.05をけてpoint数を計算して代入。
3.誕生日の場合には5倍になるようpointに5をかけて、point.floorにて小数点以下を切り捨てる。
def calculate_points(amount, is_birthday)
if amount <= 999
point = point * 0.03
else
point = pont * 0.05
end
if is_birthday
point = point * 5
end
puts "ポイントは{point.floor}点です。" end
each入れ子構造
家具の名前と値段が入った配列の合計額を出力したいとき(each入れ子構造)
furniture_price = "table", [200, 250, 220, ["chair", [100, 120, 80]], ["sofa", [1200, 1500]]]
まずはじめに["table", [200, 250, 220]という値を取り出す。
そして、変数furnitureに代入。
その後、[200, 250, 220]という値を1つずつ取り出し、自己代入してsumを出力する。
①sum = 0
②sum = 0 + 200
③返り値としてsum = 200となる。
そして、2回めの処理として
① sum = 200から始まり、
② sum = 200 + 250
③sum = 450となり、③回めも同様の処理をすると合計値が670となる。
よってこの処理はtableの合計金額は670円ですと出力されることになる。
この処理を後のchairとsofaでも繰り返し行う。
furniture_price = [["table", [200, 250, 220]], ["chair", [100, 120, 80]], ["sofa", [1200, 1500]]] furniture_price.each do |fruit| sum = 0 furniture[1].each do |price| sum += price end puts "#{furniture[0]}の合計金額は#{sum}円です" end
if文をunless文へ書き換え
問題
if p + q > 0
puts "計算結果は0より大きいです"
end
【自分の回答】
unless p + q < 0
puts "計算結果は0より大きいです"
end
しかし、これでは"不正解"
unless p + q < 0 ←これにしてしまうとp + q = 0のときでも表示されてしまうため、いけない。
0以上のときでも表示させてあげる必要があるので、unless p + q <= 0になる。
【全体の回答】
unless p + q <= 0
puts "計算結果は0より大きいです"
end