リア充爆発日記

You don't even know what ria-ju really is.

rspecキモい。

RspecがキモいんだかRubyがキモいんだか。

SNS的な「ともだちになる」機能を作ろうとしたとする。
そのために

  • 既にともだちかどうかを確認するメソッド -> friend_of?(other_user)
  • ともだちになるメソッド -> become_friend!(other_user)

の2を実装しようとしたとき、テストは以下のように書ける

~snip~
  describe "become_friend" do
    let(:other_user) { FactoryGirl.create(:user) }
    before do
      @user.save
      @user.become_friend!(other_user)
    end

    it { should be_friend_of(other_user) } #=> ココ!
    its(:friends) { should include(other_user) }
  end

キモいと思ったのは下から3行目のところで、マッチャー(?)に自作のメソッドが使えるっていうのはシロート童貞のぼくには刺激が強すぎました。これがメタプログラミングの恐ろしさってやつでしょうか。

なお、become_friend!については、become_friend_of!とどっちにするか、シロート童貞なりに悩みましたが前者にすることにしたことを追記して終わりたいと思います。

以上、よろしくお願い致します。