Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

95 lines (81 sloc) 2.606 kb
require 'spec/spec_helper'
module Spec
module Mocks
describe "Mock ordering" do
before do
@mock = mock("test mock")
end
after do
@mock.rspec_reset
end
it "should pass two calls in order" do
@mock.should_receive(:one).ordered
@mock.should_receive(:two).ordered
@mock.one
@mock.two
@mock.rspec_verify
end
it "should pass three calls in order" do
@mock.should_receive(:one).ordered
@mock.should_receive(:two).ordered
@mock.should_receive(:three).ordered
@mock.one
@mock.two
@mock.three
@mock.rspec_verify
end
it "should fail if second call comes first" do
@mock.should_receive(:one).ordered
@mock.should_receive(:two).ordered
lambda do
@mock.two
end.should raise_error(MockExpectationError, "Mock \"test mock\" received :two out of order")
end
it "should fail if third call comes first" do
@mock.should_receive(:one).ordered
@mock.should_receive(:two).ordered
@mock.should_receive(:three).ordered
@mock.one
lambda do
@mock.three
end.should raise_error(MockExpectationError, "Mock \"test mock\" received :three out of order")
end
it "should fail if third call comes second" do
@mock.should_receive(:one).ordered
@mock.should_receive(:two).ordered
@mock.should_receive(:three).ordered
@mock.one
lambda do
@mock.three
end.should raise_error(MockExpectationError, "Mock \"test mock\" received :three out of order")
end
it "should ignore order of non ordered calls" do
@mock.should_receive(:ignored_0)
@mock.should_receive(:ordered_1).ordered
@mock.should_receive(:ignored_1)
@mock.should_receive(:ordered_2).ordered
@mock.should_receive(:ignored_2)
@mock.should_receive(:ignored_3)
@mock.should_receive(:ordered_3).ordered
@mock.should_receive(:ignored_4)
@mock.ignored_3
@mock.ordered_1
@mock.ignored_0
@mock.ordered_2
@mock.ignored_4
@mock.ignored_2
@mock.ordered_3
@mock.ignored_1
@mock.rspec_verify
end
it "should pass when duplicates exist" do
@mock.should_receive(:a).ordered
@mock.should_receive(:b).ordered
@mock.should_receive(:a).ordered
@mock.a
@mock.b
@mock.a
end
end
end
end
Jump to Line
Something went wrong with that request. Please try again.