Hi
Can I still rely on this RSpec behaviour?
I’ve got a spec for a TCP socket client:
it "should do things in a sane order" do
@socket.should_receive(:write) do
@socket.should_receive(:read) do
@socket.should_receive(:close)
end
end
@client.update_news_feeds
end
But this passes, where I was expecting it to fail:
def update_news_feeds
socket = TCPSocket.new(@server, @port)
socket.read
socket.write("UPDATE\n")
socket.close
end
Has this form of expectation ordering been removed?
Thanks
Ashley
–
http://www.patchspace.co.uk/
On Tue, Oct 7, 2008 at 7:59 AM, Ashley M.
[email protected] wrote:
end
socket.close
end
Has this form of expectation ordering been removed?
As far as I know this form of expectation ordering was never
supported. If you’ve seen documentation that suggests it should be,
please point me to it so I can resolve the discrepancy.
Ordering in rspec mocks is managed with the #ordered method:
@socket.should_receive(:write).ordered
@socket.should_receive(:read).ordered
@socket.should_receive(:close).ordered
See http://rspec.info/documentation/mocks/message_expectations.html -
almost all the way down the page.
Cheers,
David
On 7 Oct 2008, at 15:15, David C. wrote:
As far as I know this form of expectation ordering was never
supported. If you’ve seen documentation that suggests it should be,
please point me to it so I can resolve the discrepancy.
Aslak told me himself… on this list :o)
Ordering in rspec mocks is managed with the #ordered method:
@socket.should_receive(:write).ordered
@socket.should_receive(:read).ordered
@socket.should_receive(:close).ordered
I forgot about that. When I asked on the list before it was because I
needed a way to do inter-mock ordering. Thanks for the link, it
solved the problem in the example I gave. Unfortunately looks like
I’ve lost the ability to do this:
it "should migrate the database (after initialising it)" do
DataMapper.should_receive(:setup) do
Database::Migrator.should_receive(:migrate_up!)
end
@server.start
end
Maybe I was the only person taking advantage of this?
Ashley
–
http://www.patchspace.co.uk/
On Tue, Oct 7, 2008 at 9:40 AM, Ashley M.
[email protected] wrote:
Ordering in rspec mocks is managed with the #ordered method:
it “should migrate the database (after initialising it)” do
DataMapper.should_receive(:setup) do
Database::Migrator.should_receive(:migrate_up!)
end
@server.start
end
Maybe I was the only person taking advantage of this?
Is the block no longer being executed? If so, then we have a problem
Please report this at http://rspec.lighthouseapp.com.
Thanks,
David
On 7 Oct 2008, at 15:55, David C. wrote:
Is the block no longer being executed? If so, then we have a problem
Please report this at http://rspec.lighthouseapp.com.
Bizarrely, my little test…
require ‘spec’
describe “Blocks” do
it “should be called” do
b = mock(Object)
b.should_receive(:this) do
b.should_receive(:that)
end
b.that
b.this
end
end
Works as expected (the above fails)
I’ll have to investigate further…
Ashley
–
http://www.patchspace.co.uk/