前回はRSpecの基本メソッドについてまとめました。今回はMockについてまとめます。 テストダブルとは テスト対象が依存しているモジュールやリソースの代役のこと。結合テストのような複雑な環境を事前に用意せずとも目的の機能をテスト可能となるように振る舞いをシミュレートする。 irb,pry等でMockを試したい時、
前回はRSpecの基本メソッドについてまとめました。今回はMockについてまとめます。 テストダブルとは テスト対象が依存しているモジュールやリソースの代役のこと。結合テストのような複雑な環境を事前に用意せずとも目的の機能をテスト可能となるように振る舞いをシミュレートする。 irb,pry等でMockを試したい時、
この版のまえがき 改訂版の「Everyday Rails - RSpecによるRailsテスト入門」を手にとっていただき、どうもありがとうございます。改訂版をリリースするまで、長い時間がかかりました。そして、内容も大きく変わりました。本書を読んだみなさんに「長い間待った甲斐があった」と思っていただけると幸いです。 なぜこんなに時間がかかったのでしょうか?前述のとおり、内容は大きく変わりました。本の内容そのものも変わりましたし、Railsにおける一般的なテストの考え方も変わっています。まず後者について説明しましょう。Rails 5.0の登場と同時に、Railsチームはコントローラのテストを事実上非推奨としました。個人的にこれは素晴らしいニュースでした。本書の前の版では説明に 3章 も使っていましたが、私も最初はコントローラのテストを理解するのに非常に苦労したのを思い出しました。そして、最近で
はじめに みなさんこんにちは! この記事は「必要最小限の努力で最大限実戦で使える知識を提供するRSpec入門記事」、略して「使えるRSpec入門」の第3回です。 今回はRSpecのモックを使ったテストについて説明します。 これまでモックを全く使ったことがない人でもわかるように丁寧に説明していくつもりです。 また、これまでの回と同様、個人的に使用頻度が低いと思っている内容についてはバッサリ説明を省きます。 ただし、第1回や第2回に比べるとテストコードが少し複雑になって、仕組みや動きを想像するのがちょっと難しいかもしれません。 ぱっと頭に入ってこない場合はじっくり本文を読んだり、実際に自分で写経しながらコードを動かしたりするなどして、少し時間をかけながら理解するようにしてください。 今回は以下のような内容を説明します。 モックの基本的な使い方 モックを使った検証 モックでわざとエラーを発生させ
Speee エンジニア組織推進室の服部 (yhatt) です。 みなさん E2E テストされていますでしょうか。弊社の Ruby on Rails プロダクトにおいては、RSpec、Capybara、 Poltergeist を組み合わせ、 feature spec で E2E テストを行う構成が一般的でした。 そんな中、Chrome 59 に ヘッドレスモード (--headless) が搭載 されたことで、テストや CI 環境において、最新の Chrome 環境による E2E テストを実施できるようになりました。それに合わせて、PhantomJS のコアメンテナーがメンテナーを降りる ことを発表し、PhantomJS のアップデートや、継続的サポートは期待できない状況となっています。 ヘッドレス Chrome ことはじめ | Web | Google Developers [A
例えばUser Agentの値で表示される画面を切り替える処理など、HTTPヘッダの値に処理が依存する場合にコントローラに渡すヘッダの値を上書きしたい場合など。request.envを使えば良い describe TestController do context 'iphon safari' do request.env['HTTP_USER_AGENT'] = '…' end end
私はRubyMineを利用して開発を行っていますが、RSpecを実行時にコンソールログにRails.logger のログ内容を出力したいことがままあります。そのための設定についてのメモです。 設定は簡単で、spec_helper に以下の内容を記述すればOKです。 Rails.logger = Logger.new(STDOUT) RSpec.configure do |config| ... ちなみに、同じようにSQLの実行ログを出力したい場合には以下の設定を追加すればOKです。 ActiveRecord::Base.logger = Logger.new(STDOUT) RSpec.configure do |config| ... どちらの場合も、ログの出力量によっては実行時間に影響しますのでご注意くださいませ。
概要 今時のwebサイトってPC用とスマートフォン用にUI作り分ける感じですよね? ジョブメドレーでもjpmobile/jpmobile · GitHubを使って、PC用とスマートフォン用の画面を作り分けている。 そんな時に、featureテストを書くとしたら画面要素がそれぞれ違うので、テスト別々に書く必要がありますよね? 設定も含めて、どうやってPC用とスマートフォン用のテストをかき分けるかというお話です。 前提 gem 'jpmobile'を入れていること include Jpmobile::ViewSelectorを読み込んでること PC用とスマートフォン用のテンプレートを用意していること Rspecの設定 まずは、スマートフォン用画面へ切り替えるため、user agentを偽装する関数を用意する # spec/features/sample_spec.rb module Featu
本当のリア充はクリスマスだからといってむやみにツイートを抑えたり偽装したりしない。通常運転。 Rails3+rspec2でWeb APIサーバのpostをテストする方法がよくわからなかった件の続編。 今度はAPIサーバ、つまりサブドメイン縛りのリソースに対してroutingのテストをした時のメモ。 routingのテストはspec/routingディレクトリに配置するらしい。 https://github.com/rspec/rspec-rails#routing-specs で、サブドメイン縛りっていうのがどうやったらいいのかよくわからなくて試行錯誤した結果が結局これ。 profiles_route_spec.rb require 'spec_helper' describe "routing to posts" do it "routes to #show" do expect(get
はじめに みなさんこんにちは! この記事は「必要最小限の努力で最大限実戦で使える知識を提供するRSpec入門記事」、略して「使えるRSpec入門」の第2回です。 今回はRSpecのマッチャについて説明していきます。 第1回と同様、今回も「最低限これだけは」という内容に絞り込んで説明します。 使用頻度の少ないマイナーなマッチャ(注:僕基準)については説明しません。 具体的な項目は以下の通りです。 マッチャとは何か to / not_to / to_not eq be be_xxx be_truthy / be_falsey change + from / to / by 配列 + include raise_error be_within + of これからRSpecを始める人はもちろん、何度かRSpecに触れて「うーん、RSpecってわけわからん」となっている人もこの記事で再入門してみると
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く