カテゴリー : RSpec

[RSpec] Time.now をスタブ化

Ruby on Rails + RSpec で Time.now をスタブ化するコードをメモ。

time_now = Time.local(2013, 12, 31, 0, 0, 0)
Time.stub!(:now).and_return(time_now)

[RSpec] SeedFu.seed でシードファイルの読み込み先を SeedFu.fixture_paths で指定する

Ruby on Rails + RSpec でテストを走らす前に SeedFu.seed で初期データを流し込んで運用しています。

シードファイルの読み込み先を変更したい場合は SeedFu.fixture_paths に配列で path を渡してあげればOKです。

# spec/spec_helper.rb
 
RSpec.configure do |config|
  # Seed_fu
  config.before(:suite) do
    SeedFu.fixture_paths = [
      "#{Rails.root}/db/fixtures",
      "#{Rails.root}/db/fixtures_initialization"
    ]
    SeedFu.seed
  end
end

[参考]:mbleigh/seed-fu · GitHub

[Ruby on Rails] RSpec でのファイルアップロードの方法

Ruby on Rails + RSpec でのファイルアップロードするためのメソッドをメモ。

fixture_file_upload
Rack::Test::UploadedFile.new
ActionController::TestUploadedFile.new
ActionDispatch::Http::UploadedFile.new

[参考]:ruby – How do I test a file upload in rails? – Stack Overflow はてなブックマーク - ruby - How do I test a file upload in rails? - Stack Overflow

[RSpec] stub_const で定数の stub(スタブ)化

RSpec で、定数を stub(スタブ)化するには stub_const メソッドを使います。

(例)定数 FOO をスタブ化

FOO = 7
 
describe "stubbing FOO" do
  it "can stub FOO with a different value" do
    stub_const("FOO", 5)
    FOO.should eq(5)
  end
 
  it "restores the stubbed constant when the example completes" do
    FOO.should eq(7)
  end
end

(例)Class や Module の定数をスタブ化

module MyGem
  class SomeClass
    FOO = 7
  end
end
 
module MyGem
  describe SomeClass do
    it "stubs the nested constant when it is fully qualified" do
      stub_const("MyGem::SomeClass::FOO", 5)
      SomeClass::FOO.should eq(5)
    end
  end
end

[参考]:Stub Defined Constant – Stubbing constants – RSpec Mocks – RSpec – Relish はてなブックマーク - Stub Defined Constant - Stubbing constants - RSpec Mocks - RSpec - Relish

[RSpec] コントローラーのテストで Ajax リクエストを送る方法

RSpec で、コントローラーのテストで Ajax リクエストを送るには xhr を使えば良いらしいです。

■ Ajax GET

xhr :get, :index

■ Ajax POST

xhr :post, :create, id: 1

下記のような感じで使えます。カンタンですね!

describe "Ajax GET 'index'" do
  it "returns http success" do
    xhr :get, :index
    response.should be_success
  end
end

・[参考]:ruby on rails – How do you test an AJAX request with RSpec/RoR? – Stack Overflow はてなブックマーク - ruby on rails - How do you test an AJAX request with RSpec/RoR? - Stack Overflow

[RSpec] privateメソッドをテストする方法

Ruby on Rails + RSpec で privateメソッドをテストする方法をメモ。

下記のように、Userモデルに private_method というprivateメソッドを作成した場合、

■ app/models/user.rb

class User < ActiveRecord::Base
  def public_method
    "public"
  end
 
  private
    def private_method
      "private"
    end
end

Rspec でのモデルのテストは下記のように、user.send(:private_method) で呼び出して行う。

■ spec/models/user_spec.rb

require 'spec_helper'
 
describe User do
  it 'public' do
    user = User.new
    user.public_method.should == "public"
  end
 
  it 'private' do
    user = User.new
    user.send(:private_method).should == "private"
  end
end

【参考】

UKSTUDIO – RSpecでprivateメソッドをテストする はてなブックマーク - UKSTUDIO - RSpecでprivateメソッドをテストする

[RSpec] テストコードでの Devise の使い方いろいろ

Ruby on Rails + RSpec でテストコードを書くときの Devise の使い方いろいろメモ。

主にここを読む。

How To: Controllers and Views tests with Rails 3 (and rspec) · plataformatec/devise Wiki はてなブックマーク - How To: Controllers and Views tests with Rails 3 (and rspec) · plataformatec/devise Wiki

■ current_user にスタブを使う

Controllerのテスト

before do
  controller.stub!(:current_user).and_return(FactoryGirl.create(:user))
end

他にも。

deviseを使ったコントローラのテスト #Rails #Ruby #devise #Rspec – Qiita はてなブックマーク - deviseを使ったコントローラのテスト #Rails #Ruby #devise #Rspec - Qiita

[Ruby] Rspec 入門記事まとめ

Ruby のテストフレームワーク「RSpec」を入門する上で参考になった記事をまとめてみました。

RSpec.info: home はてなブックマーク - RSpec.info: home

Rubyist Magazine – スはスペックのス 【第 1 回】 RSpec の概要と、RSpec on Rails (モデル編) はてなブックマーク - Rubyist Magazine - スはスペックのス 【第 1 回】 RSpec の概要と、RSpec on Rails (モデル編)

Rubyist Magazine – スはスペックのス 【第 2 回】 RSpec on Rails (コントローラとビュー編) はてなブックマーク - Rubyist Magazine - スはスペックのス 【第 2 回】 RSpec on Rails (コントローラとビュー編)

Rubyist Magazine – 改めて学ぶ RSpec はてなブックマーク - Rubyist Magazine - 改めて学ぶ RSpec

RSpecによるユニットテストの書き方 – tech.recompile.net はてなブックマーク - RSpecによるユニットテストの書き方 - tech.recompile.net

Twiwt:Blog / jugyo : spork でサクサク RSpec on Rails3 はてなブックマーク - Twiwt:Blog / jugyo : spork でサクサク RSpec on Rails3

RSpecでRailsのテストをしてみるテスト。 | Ginpen.com はてなブックマーク - RSpecでRailsのテストをしてみるテスト。 | Ginpen.com

RSpecでテストコードを書いたまとめ – (゚∀゚)o彡 sasata299’s blog はてなブックマーク - RSpecでテストコードを書いたまとめ - (゚∀゚)o彡 sasata299's blog

私はRSpecでテストをこんな感じで書いてる – アジャイルSEを目指すブログ はてなブックマーク - 私はRSpecでテストをこんな感じで書いてる - アジャイルSEを目指すブログ

RSpec で View のテスト

ビューをRSpecでテストする際の覚え書き – MothProgのうしろがわ はてなブックマーク - ビューをRSpecでテストする際の覚え書き - MothProgのうしろがわ

aRailsDemo | #37 RSpec – Views Part 1 はてなブックマーク - aRailsDemo | #37 RSpec - Views Part 1

RSpec で Request のテスト

ASCIIcasts – “Episode 257 – request specとCapybara” はてなブックマーク - ASCIIcasts - “Episode 257 - request specとCapybara”

RSpec の構文

Start! Ruby – RSpecの構文 はてなブックマーク - Start! Ruby - RSpecの構文

contain, have_selector, have_xpath などの利用例

wincent.com: Webrat matchers はてなブックマーク - wincent.com: Webrat matchers

RSpec の便利な設定など

最近話題のRSpecのプレゼンの中で知らなかったこと – takihiroの日記 はてなブックマーク - 最近話題のRSpecのプレゼンの中で知らなかったこと - takihiroの日記

Devise でのテスト

How To: Controllers and Views tests with Rails 3 (and rspec) · plataformatec/devise Wiki はてなブックマーク - How To: Controllers and Views tests with Rails 3 (and rspec) · plataformatec/devise Wiki

RSpecのドキュメント

Publisher: RSpec – Relish はてなブックマーク - Publisher: RSpec - Relish

とりあえず、以上。

[RSpec] stub(スタブ)と mock(モック)の違い

RSpec の stub(スタブ)と mock(モック)の違いについて調べたので、参考になったサイトをメモ。

とりあえず、以上です。