The following works: it "should evaluate a passed in block in the context of the interview object" do block = Proc.new { raise unless self.is_a? (Interview) }.should_not raise_error Interview.create(:title => "Text", &block) end However, the following does not: it "should evaluate a passed in block in the context of the interview object" do block = Proc.new { self.should be_an_instance_of(Interview) } Interview.create(:title => "Text", &block) end I''d far prefer to use the latter. However "be_an_instance_of" is not defined on my Interview class per the interpreter. While I''ve poked a little inside RSpec for insights, I''m just a tad too tired to dig in for an answer for this one. Can someone help me out after clobbering me for what is likely to turn out to be a foolish question? Thanks, Evan
On 10/24/07, Evan David Light <evan at tiggerpalace.com> wrote:> The following works: > > it "should evaluate a passed in block in the context of the > interview object" do > block = Proc.new { raise unless self.is_a? > (Interview) }.should_not raise_error > Interview.create(:title => "Text", &block) > end > > However, the following does not: > > it "should evaluate a passed in block in the context of the > interview object" do > block = Proc.new { self.should be_an_instance_of(Interview) } > Interview.create(:title => "Text", &block) > end > > I''d far prefer to use the latter. However "be_an_instance_of" is not > defined on my Interview class per the interpreter.That is correct. It gets evaluated, as your example narrative states: in the context of the interview object. How about something like this? it "should evaluate ..." do $interview = nil Interview.create(:title => "Text") do $interview = self end $interview.should be_an_instance_of(Interview) end end