That's because assigns only works in a Rails functional test.

If you're the author of the module, you could add a self.included block that then sets up an attr_reader :link, like so:

  def self.included(base)
    base.class_eval do
      attr_reader :link
    end
  end

Then, all you have to say is @link.link.should == Link.new.

Otherwise, you can access the instance variable within @link using instance_variable_get. So @link.instance_variable_get("@link").should == Link.new.

-- Elliot

On 11/16/09 1:32 PM, Andy Koch wrote:
I've seen several posts related, but not touching on what I'm
wondering...

I have a lib module that I'd like to do 'white-box' testing - similar
to a Rails mvc.  But I can't see how to get a handle on the internal
instance vars in the method.

here are some code snippets that probably best explain my situation...

#########################################################
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')

describe AasmCrawler do

   context "create_message method" do
     it "should create a new Link message" do
       @link.should == Link.new
     end
   end
end
#########################################################
module AasmCrawler
   def create_message
     @link = Link.new
   end
end
#########################################################

I've tried "assigns[:link]" but "assigns" is not known.

I've also seen comments to test this via a model where it is included
- but that seems like WET testing, if this is used repeatedly why not
test it once at the source?

thanks for any help
_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users
_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to