ウェブサービスを作っています。

rspec

VCR で、タイムスタンプなどの動的パラメータを無視する

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-rspec gem が便利

Active Decorator の decorator 内で、ヘルパーのメソッドを使っていると、テストをうまく書けないという問題があります。 今までは、 active_decorator のdecoratorをrspecでテストする方法 - アジャイルSEを目指すブログ を参考にさせていただいていたので…

RSpec で Active Job のテストを書く

追記(2016/11/11 10:33): この記事の内容は古くなっており、あまりおすすめしません。RSpec 公式の方法をお使い下さい。 have_been_enqueued matcher - Matchers - RSpec Rails - RSpec - Relish have_enqueued_job matcher - Matchers - RSpec Rails - RSpe…

RSpec で sleep を stub する

ruby - RSpec: stubbing Kernel::sleep? - Stack Overflow rspecでsleepをスタブする方法 - てへぺろ力 上記の方法でうまくいかない、ライブラリ内部などで sleep されている場合を考えてみました。 spec/support/stub_sleep.rb module Kernel def sleep_wit…

RSpec + VCR で HTTP テストデータを簡単に作成する

HTTP リクエストをスタブ化する WebMock というライブラリがあります。 これは便利なのですが、リクエストの数が増えてくると、テストデータの管理が大変な場合があります。 VCR を使うと、自動でテストデータを作成してくれて便利です。 参考: VCRを使うとR…

RSpec 使用時 rails g model で、Factory Girl のファイルも作成する

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…

Shoulda は RSpec でも使える

なんかこんなのが動いた。びっくりした。 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…

it_should_behave_like が割と便利

成功時 / 失敗時なんかで振る舞いを分けるけど、その前に共通の処理を書いてる、って場面は結構あります。 たとえば def create @article = Article.new(params[:article]) if @article.save ... else ... end end みたいなやつです。if の前に、共通の処理…

rspec-mode を使っています

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 のバグっぽい挙動について

RSpec on Rails で redirect_to のテストを書いていると、 ActionController::MethodNotAllowed Only get requests are allowed. や ActionController::MethodNotAllowed Only get, put, and delete requests are allowed. といった、謎の例外が発生すること…

rspec_scaffold で吐かれる spec が初心者の参考になったりするかも

rspec のサンプルってなかなかなくて、モデルのバリデーションテストくらいは書けるけど、コントローラとかビューとか、とにかく、どうやって書いたらいいんだろ..って人は結構多いのではないかと思ったりします。 rspec_scaffold を使って生成される spec …

TinyCss を github に置いて gem にしました

先日のエントリで公開した TinyCss をいろいろいじって、github で gem にしました。 milk1000cc/tiny_css · GitHub sudo gem install milk1000cc-tiny_css --source=http://gems.github.com でインストールできます。インターフェースは変わってないですが…