Using Mocha to stub value assignments

Hi
I'm using Mocha to mock a HTTP connection, so I can test higher level
application code without requiring a 'live' webserver host. However, I'm
having difficulty trying to stub some of the
connection handle parameters.

My connection class init opens the port as follows:
class NetConnection
   def initialize(host, port)
      # -- Outgoing is an Https post
      @handle_tx = Net::HTTP.new(host, port)
      @handle_tx.use_ssl = true
      @handle_tx.verify_mode = OpenSSL::SSL::VERIFY_NONE
   end
end

In my test class, I'm mocking the Net::HTTP connection as follows:

   def test_open_port
      net_mock = mock('Net::HTTP')
      Net::HTTP.expects(:new).once.with(exp_host,
exp_port).returns(net_mock)

      net_connection = NetConnection.new(exp_host, exp_port)
   end

The problem is in the following calls in the NetConnection constructor
      @handle_tx.use_ssl = true
      @handle_tx.verify_mode = OpenSSL::SSL::VERIFY_NONE

Since these are assignments, not methods with parameters, how do I stub
them? I couldn't find an appropriate method in the Mocha API

I tried the following, but they don't 'match' the actual call
      net_mock.expects(:use_ssl).once.with(true)
      net_mock.expects(:verify_mode).once.with('OpenSSL::SSL::VERIFY_NONE')

I get the following error when I use the above expects for :use_ssl

  1) Failure:
unexpected invocation: #<Mock:Net::HTTP>.use_ssl=(true)
unsatisfied expectations:
- expected exactly once, not yet invoked:
#<Mock:Net::HTTP>.use_ssl(true)
satisfied expectations:
- expected exactly once, already invoked once: - expected exactly once,
already invoked once: Net::HTTP.new(exp_host, exp_port)

Any suggestions?

thanks
Michael

Michael Corr wrote in post #970988:

Hi
I'm using Mocha to mock a HTTP connection, so I can test higher level
application code without requiring a 'live' webserver host. However, I'm
having difficulty trying to stub some of the
connection handle parameters.

This doesn't really have anything to do with Rails, so it should have
been asked on the main Ruby list...but why not use WebMock? It already
does exactly what you're trying to do.

Best,

Michael Corr wrote in post #970988:

Hi

I’m using Mocha to mock a HTTP connection, so I can test higher level

application code without requiring a ‘live’ webserver host. However, I’m

having difficulty trying to stub some of the

connection handle parameters.

This doesn’t really have anything to do with Rails, so it should have

been asked on the main Ruby list…

OT, but what is the ‘main’ ruby list? I just looked for google groups for ‘ruby’ and see a few, any recommendations?

David Kahn wrote in post #971102:

These *are* method calls (and the corresponding method name is foo= )

Fred

Frederick Cheung wrote in post #971106:

These *are* method calls (and the corresponding method name is foo= )

Fred

Fred
That worked - thank you. I figured it was something simple that I was
missing

Marnen/David
I apologize if this wasn't the correct list to post this question. The
mocha-dev@rubyforge forum seems to be 'dead', and when I did a search
across all forums at www.ruby-forum.com for previous posts about
'mocha', this one gave me the most hits so I thought I'd start here

thanks everyone
Michael