maeshimaの日記

メモ書きです

rspec

let

beforeがネストされるexpectationのときにletの導入を考えるとよさげ。でも階層深いときに多用しまくるとかえって見づらくなる? Rubyist Magazine - 改めて学ぶ RSpec

最近の application controller のテスト方法

application controller のテスト用に controller メソッドがある。このメソッドのブロック中にメソッドを定義すると、それは appliction controller のテスト用のサブクラスのモックアクションとなる。

RSpecの新しい仕様

最近の記法は結構知らないので復習したい。 最近話題のRSpecのプレゼンの中で知らなかったこと - takihiroの日記

一つの example に 二つ以上の should を使ってもおk

そういえばRspec本の例となる spec にshould が二つ使われているものがあった。。should って一つの example に一つだけのイメージだったけど二つ以上でもいいのかな。

Rails Models

Rails Model の spec の書き方について。 Rails Model outside-in で実装してれば一番最後に実装するのが Model で、望ましい interface はもう決まっているはず。 26.1 Writing Model Specs model の spec を書くのは controller や view と比べて簡単。 co…

Chapter 25 Rails Controllers

Rails controller の spec の書き方について。 25.1 Controller Specs ModelName.new も疎結合のためにstubを実装したほうがいい。 mock_modelってなんだっけ -> new_record?やidなどの基本的なstubがついてるmock adding context specific examples 成功時…

Chapter 14 Spec::Mocks

あんまり需要なさそうなのでメインブログから引っ越し。mockについて。 14.1 Test Doubles Test Doubleは他のオブジェクトの代わりをするオブジェクトSpec::Mocks double("double") stub("stub") mock("mock") これらのメソッドは全部同じで Spec::Mocks::Mo…

controllerでエラー発生時のテストをしたいとき

エラー発生時に500ページを表示するようなテストを書きたいときに、デフォルトだとrspecがエラーを横取りしてしまってうまくいかない。spec中に下記のように書いておくと横取りを防げるみたい。 rescue_action_in_public! # 昔の書き方。今はdepricated # co…

helperのテスト

helperメソッドを使うと、describeの引数で設定したヘルパーモジュールのインスタンスにアクセスできる。インスタンス変数 @hoge に "fuga" を入れてテストしたい時は下記のように assign メソッドを使う assign[:hoge] = "fuga"

itsメソッド

これはべんり! describe Array do before do @ary = [1, 2, 3] end subject{@ary} its(:size){should == 3} end 参考 OSC2009 Tokyo/FallでCukeとRSpecの紹介をしました - moroの日記

RSpec Machers

RSpec Matchers | Teach Me To Codeカスタムマッチャの定義についての上記のサイトを見て。下記のような感じで定義できるみたい。 Spec::Matchers.define :contains do |element| match do |container| container.include? element end end describe Array d…

これまでのrspec本勉強の復習

これまでメインアカウントのブログでrspecについて書いてきたことを復習して気になったところを簡単にまとめてみた。 ?を末尾に持つメソッドの書き換え receiver.hoge?.should == true は下記のようにも書ける receiver.should be_hoge receiver.should be_a…

Rspec入門メモ

RSpec の入門とその一歩先へ - t-wadaの日記を読んで気になったところを抜粋したメモです 自信があるときには明白な実装 そうでないときは仮実装によるテストのテスト→三角測量をする 実装クラスのリファクタリングでテストもリファクタリングする be_[predi…

rspec_scaffold

rspec_modelとかは覚えてるんだけどrspec_scaffoldはついつい忘れがち script/generate rspec_scaffold post title:string body:title

Shared Example Groups

下記のようにshared_examples_forで定義したexample groupは、it_should_behave_likeメソッドを使うことで、複数の箇所で使い回せる。controllerのテストを書くときなどに使えそう(modelでは使う場面はないような気がする?) shared_examples_for "All Emplo…

contextメソッド

テストコードを見やすくするためのdescribeのエイリアス。 describe オブジェクトを指定 context コンテキストを指定

should be_redirectは使わない

リダイレクト先までチェックするshould redirect_to(url)を使った方がよさげ