Ooh, I totally want to do this, I'll work on it this week along with my other patch i have yet to submit this week, unless Scott is partial to doing it. Do you want it, Scott?
Nathan Sutton [EMAIL PROTECTED] rspec edge revision 2910 rspec_on_rails edge revision 2909 rails edge revision 8175 On Nov 21, 2007, at 4:13 PM, David Chelimsky wrote: > On Nov 21, 2007 3:53 PM, Scott Taylor > <[EMAIL PROTECTED]> wrote: >> >> On Nov 21, 2007, at 4:22 PM, David Chelimsky wrote: >> >> >>> On Nov 21, 2007 3:14 PM, Daniel N <[EMAIL PROTECTED]> wrote: >>>> Hi, >>>> >>>> I want to be able to get at the described class in my shared >>>> behaviour. I'm >>>> sure an example will say it better than my words >>>> >>>> describe "my shared", :shared => true do >>>> >>>> it "should tell me what the class is its describing" do >>>> how_do_i_get_the_user_class_here >>>> end >>>> >>>> end >>>> >>>> describe User do >>>> it_should_behave_like "my shared" >>>> >>>> #... >>>> end >>>> >>>> So in my shared behaviour, how do I get access to the User class? >>> >>> There's no way to do this implicitly. i.e. rspec does not expose the >>> class. You'd have to have a method like described_class or >>> something: >>> >>> describe "my shared", :shared => true do >>> >>> it "should tell me what the class is its describing" do >>> described_class.should do_something_I_care_about >>> end >>> >>> end >>> >>> describe User do >>> def described_class >>> User >>> end >>> ... >>> end >> >> Or you could just set up instance variables in your before :each >> block: >> >> describe "an object which has to_s", :shared => true do >> it "should work!" do >> :foo.send(@method).should == "foo" >> end >> end >> >> describe Symbol do >> before :each do >> @method = :to_s >> end >> >> it_should_behave_like "an object which has to_s" >> end >> >> >> On another note, I've been poking around Rubinius' source, which uses >> a scaled down version of rspec, and they already have shared examples >> with parameters: >> >> shared :symbol_id2name do |cmd| >> describe "Symbol\##{cmd}" do >> it "returns the string corresponding to self" do >> :rubinius.send(cmd).should == "rubinius" >> :squash.send(cmd).should == "squash" >> :[].send(cmd).should == "[]" >> :@ruby.send(cmd).should == "@ruby" >> :@@ruby.send(cmd).should == "@@ruby" >> end >> end >> end >> >> require File.dirname(__FILE__) + '/../../spec_helper' >> >> describe "Symbol#to_s" do >> it_behaves_like(:symbol_id2name, :to_s) >> end >> >> >> This doesn't seem that hard to implement. Is there some reason a >> patch has been created yet? > > Yes. You haven't submitted it. > >> >> Scott >> >> >> >> _______________________________________________ >> rspec-users mailing list >> rspec-users@rubyforge.org >> http://rubyforge.org/mailman/listinfo/rspec-users >> > _______________________________________________ > rspec-users mailing list > rspec-users@rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users