概要
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