rspec
VCR 4.0.0 + RSpec 3.7.0 で確認しています。 spec/support/vcr.rb VCR.configure do |c| c.cassette_library_dir = 'spec/cassettes' c.hook_into :webmock c.configure_rspec_metadata! end spec vcr_options = { cassette_name: '...', match_requests_on…
Active Decorator の decorator 内で、ヘルパーのメソッドを使っていると、テストをうまく書けないという問題があります。 今までは、 active_decorator のdecoratorをrspecでテストする方法 - アジャイルSEを目指すブログ を参考にさせていただいていたので…
追記(2016/11/11 10:33): この記事の内容は古くなっており、あまりおすすめしません。RSpec 公式の方法をお使い下さい。 have_been_enqueued matcher - Matchers - RSpec Rails - RSpec - Relish have_enqueued_job matcher - Matchers - RSpec Rails - RSpe…
ruby - RSpec: stubbing Kernel::sleep? - Stack Overflow rspecでsleepをスタブする方法 - てへぺろ力 上記の方法でうまくいかない、ライブラリ内部などで sleep されている場合を考えてみました。 spec/support/stub_sleep.rb module Kernel def sleep_wit…
HTTP リクエストをスタブ化する WebMock というライブラリがあります。 これは便利なのですが、リクエストの数が増えてくると、テストデータの管理が大変な場合があります。 VCR を使うと、自動でテストデータを作成してくれて便利です。 参考: VCRを使うとR…
rails (3.1.1)、rspec-rails (2.7.0)、factory_girl_rails (1.3.0) という環境です。 config/application.rb の config.generators に設定を書くだけです。 module Hoge class Application < Rails::Application ... config.generators do |g| g.fixture_rep…
なんかこんなのが動いた。びっくりした。 class Post < ActiveRecord::Base validates_presence_of :title end describe Post do it { should validate_presence_of(:title) } end 便利マクロが使い放題。 やり方は、config/environment.rb に config.gem 'r…
成功時 / 失敗時なんかで振る舞いを分けるけど、その前に共通の処理を書いてる、って場面は結構あります。 たとえば def create @article = Article.new(params[:article]) if @article.save ... else ... end end みたいなやつです。if の前に、共通の処理…
http://barelyenough.org/projects/rspec-mode/ Rails プログラム編集中に使った場合 モデル・コントローラ・ビューファイル上で、\C-c , t -> 対応 spec ファイルが開く spec ファイル上で、\C-c , t -> 対応モデル・コントローラ・ビューファイルが開く な…
http://example.com/articles.rssのようなリクエストをテストする方法です。 config/routes.rb map.resources :articles app/controllers/articles_controller.rb class ArticlesController < ApplicationController def index respond_to do |format| forma…
RSpec on Rails で redirect_to のテストを書いていると、 ActionController::MethodNotAllowed Only get requests are allowed. や ActionController::MethodNotAllowed Only get, put, and delete requests are allowed. といった、謎の例外が発生すること…
rspec のサンプルってなかなかなくて、モデルのバリデーションテストくらいは書けるけど、コントローラとかビューとか、とにかく、どうやって書いたらいいんだろ..って人は結構多いのではないかと思ったりします。 rspec_scaffold を使って生成される spec …
先日のエントリで公開した TinyCss をいろいろいじって、github で gem にしました。 milk1000cc/tiny_css · GitHub sudo gem install milk1000cc-tiny_css --source=http://gems.github.com でインストールできます。インターフェースは変わってないですが…