Spy verifies receipt of an attr assignment call
Opened this issue · 2 comments
josephholsten commented
describe 'Spy' do
subject { stub!.subject }
describe "with an attr_writer" do
before { stub(subject).attribute=(anything) }
context "after setting the attr" do
before { subject.attribute = :value }
it("verifies receipt of the call") { should have_received.attribute=(:value) }
it("verifies receipt of the call via method_missing hack") { should have_received.method_missing(:attribute=, :value) }
end
end
end
DouglasMeyer commented
Unless you run the test, I'm not sure if the problem is obvious. Essentially
should have_recieved.attribute(:value)
works but
should have_recieved.attribute=(:value)
doesn't work.
It looks like RR::SpyVerificationProxy.method_missing isn't returning the new RR::SpyVerification. This looks like a ruby issue as a = b = 1
will set a
to 1
and not the result of b=
(hope that makes sense).
I don't think this is something that can be fixed in a simple patch and may require something more drastic like a new api for spies.
In the mean-time you could manually verify with something like
RR::SpyVerification.new(subject, :attribute=, :value).call
mcmire commented
I can confirm this is still an issue.