Hi, I am trying to write and test a helper that accepts a block. Right now it goes something like this:
module ContactHelper # Wraps a field with div.error if it has an error. def wrap_error_field errors, &block field = capture &block if errors.empty? concat field else concat content_tag(:div, field, :class => 'error') end end # field_error_helper This is my first time writing a helper, so please tell me if I'm wrong. Then, I tried to test it, but couldn't figure it out, since it seems the method won't actually return anything due to the use of concat. The best I could figure out for now was to use eval_erb. require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') describe ContactHelper do describe "field_error_helper" do context "when there is an error" do it "should wrap the block in div.error" do assigns[:errors] = [ 'Error' ] output = eval_erb <<-ERB <% wrap_error_field @errors do %> <p>Block</p> <% end %> ERB assert_xhtml output do div.error do p 'Block' end end end # it should wrap the block in div.error end # when there is an error end # describe field_error_helper end end Is that the best/only method? I'm not sure how much I really like it. Further, when I run the tests, it always outputs "Block" before the test is executed, and I can't figure out why, and that's slightly annoying. Thanks, Brandon _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users