Linus Oleander
Linus Oleander

Reputation: 18127

Test non static methods in Rspec?

Is it possible to check what arguments is being passed to a non static method when testing with rspec?

If I for i.e want to test class A, inside class A i call class B, B is already tested. The only thing I want to test is the ingoing arguments to B.

class A
  def method
    number = 10
    b = B.new
    b.calling(number)
  end
end

class B
  def calling(argument)
    # This code in this class is already testet
  end
end

How do I test the ingoing arguments to b.calling?

I've tried this so far, without success.

it "should work" do
  b = mock(B)
  b.should_receive(:calling).at_least(1).times
  A.new.method
end

It always fails, beacuse b never was called.

Upvotes: 2

Views: 571

Answers (1)

nruth
nruth

Reputation: 1068

the b in your spec isn't the b A is instantiating (it returns a real instance of B when you call new since you haven't stubbed it), try this:

it "should work" do
  b = mock(B)
  B.should_receive(:new).and_return(b)
  b.should_receive(:calling).at_least(1).times
  A.new.method
end

Upvotes: 4

Related Questions