tkymtk's blog

Ruby on Rails及びその周辺について調べたこと。Do whatever you want to do at your own pace.

RSpec

RSpecで試行錯誤

RSpecを--format documentation を付けて実行したときに、結果がいい感じになるように工夫した過程。(だいたい) 最初 describe MatchAddress do describe '#call' do describe '000-0000' do address = described_class.new('000-0000').call it { expect(ad…

Capybara '2.3.0'と RSpec '3.0.1'をRails4.1.0で使う

Gemfileの設定 group :development, :test do gem 'rspec-rails', '~> 3.0.0' end group :test do gem 'capybara' '2.3.0' end

RSpecのバージョンをあげたら、エラーがたくさん出たので対処

エラーが出た warning: loading in progress, circular require considered harmful - /Users/me/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/sass-3.2.19/lib/sass.rb こんなエラーとか、他のエラーもたくさん出た 対処 新しいRSpecのrails generate r…

RailsでSpringが動かないとき (Mac) [ uninitialized constant Spring::SID::DL ]

エラー こんなの `fiddle_func': uninitialized constant Spring::SID::DL (NameError) from /Users/myid/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/spring-0.0.10/lib/spring/sid.rb:30:in `sid'

RSpec: マッチャー定義でchainを使う

定義 RSpec::Matchers.define :be_bigger_than do |first| match do |actual| (actual > first) && (actual < @second) end chain :but_smaller_than do |second| @second = second end end 実行

Rspecのstubとかをrails consoleで使う

Railsコンソールを起動して require 'rspec/mocks/standalone' でok リンク ruby on rails - RSpec mock from test console - Stack Overflow standalone - Outside rspec - RSpec Mocks - RSpec - Relish

Rails: rails console で FactoryGirlを使う

rails consoleを起動 rails c --sandbox そして次を入力 require 'factory_girl_rails' でok リンク https://stackoverflow.com/questions/18195851/how-do-i-use-factories-from-factorygirl-in-rails-console

spec/controllers エラー @controller is nil: make sure you set it in your test's setup method.

エラー controller is nil: make sure you set it in your test's setup method.

RSpec: featuresディレクトリ内のspecで、直接HTTPリクエストを送信したいとき。

やりたいこと こんなの before { delete user_path(user) } これはuser_path(user)にDELETEリクエストを発行する。 しかし、featuresディレクトリ内のスペックではできない。 解決策 type: :requestをdescribeの後に付ける。

RSpec: エラーメッセージをカスタムして日本語で出力する。

方法 expect()文の後ろをカンマで区切る。そして出力したいメッセージを、続けてダブルクオートの中に書く。

FactoryGirl: build と createの違い

違い build Build()メソッドはインスタンスをメモリ上にのみ記録する。 create create()メソッドはテストデータベースにも保存して、データを永続化させる。

RSpec: カスタムマッチャ Rails Tutorialでハマったところ。should_notの動作

問題 should_notが期待通りに動作しない カスタムマッチャの定義 RSpec::Matchers.define :have_error_message do |message| match do |page| expect(page).to have_selector('div.alert.alert-error', text: message) end

RSpec, Capybara: click_link でテストが失敗するときに、疑うこと。

リンクのパスや、リンクの名前が合っていることを前提とします。 結論 click_linkの直前に、適切なページを訪問しているか確認する。

RSpec: Sporkを起動時にRSpecで名前付きルート(named route)を使う方法

Sporkを起動していると、名前付きルートが上手く働きませんでした。 rspec_helper.rbに以下を追加すれば使えるようです。 Rspec.configure do |config| config.include Rails.application.routes.url_helpers ... end ちなみに、itセクションのdo...end内で…

RSpec: metaタグをテストする方法

findやhave_selectorでvisible: falseを使います。 例: <meta name="viewport" content="width=device-width, initial-scale=1.0"> のテストは↓ expect(page).to have_css('meta[name="viewport"][content="width=device-width, initial-scale=1.0"]', visible: false ) 関連:ruby on rails - Capybara not finding meta tags - Stack</meta>…

Railsインストール後:アプリケーションの作成からRspecを使えるようにするまで。

ディレクトリを作成 $ mkdir <directory_name> そのディレクトリに移動 $ cd <directory_name> アプリのひな形を生成 $ rails new <app_name> 生成したアプリのディレクトリに移動 $ cd <app_name> このとき、$ cd <app_name> --skip-test-unit とオプションを付けると、testディレクトリをつくらないので、 あとでtestディ</app_name></app_name></app_name></directory_name></directory_name>…

間違いがあれば、ご指摘下さると幸いです。