概要
rspec | 明示のsubject
詳細
明示的に初期化する場合は下記の構文を利用します。
subject { インスタンス }
構成
$ tree ┣ lib | ┗ hige.rb ┗ spec ┣ hige_spec.rb ┗ spec_helper.rb
hige.rb
# encoding: utf-8 class Hige attr_accessor :msg def initialize(str) @str = "str" end def hige "hige-#{@str}" end end
hige_spec.rb
require 'spec_helper' require 'hige' # トップレベルの利用例 describe Hige do subject { Hige.new("str") } it "hige" do puts subject.class expect(subject.send "hige".to_sym).to eq("hige-str") end end # ネスト時の利用例 describe Hige do subject { Hige.new("str") } context "hige context" do it "hige" do puts subject.class expect(subject.send "hige".to_sym).to eq("hige-str") end end end # beforeブロックからのアクセス時 describe Hige do subject { Hige.new("str") } before(:each) do subject.msg = "msg" end it "hige" do puts subject.class expect(subject.msg).to eq("msg") end end # subjectからヘルパーメソッドを利用 describe Hige do def get_hige(msg) Hige.new(msg) end subject { get_hige("str") } it "hige" do puts subject.class expect(subject.send "hige".to_sym).to eq("hige-str") end end
テスト結果
$ rspec Run options: include {:focus=>true} All examples were filtered out; ignoring {:focus=>true} Hige .Hige .Hige .Hige . Finished in 0.002 seconds 4 examples, 0 failures