You seem to be after a mock, not a stub. Martin Fowler has an article explaining the difference.
A mock is an object where you first record a number of expectations and behaviors. After the record phase, you go to the replay phase which is the actual test where the mock will respond as recorded. Finally you can verify that the mock was used as expected. In this case you need this:
// record
var mock = MockRepository.GenerateMock<IObject>();
Expect.Call(mock.Get()).Return(Guid.Empty());
Expect.Call(mock.Get()).Return(Guid.NewGuid());
// replay (normally you would pass the mock to some object under test here)
mock.Replay();
var firstResult = mock.Get();
var secondResult = mock.Get();
// verify that the mock was used as expected by the object under test
mock.Verify();
A stub on the other hand, has no notion of a "replay script". It is simply set up with canned responses. The stub does remember what happened to is so that you can make assertions later with AssertWasCalled
. This way, assertions can be kept separate from behavior. (In practice, RhinoMocks blurs the mock/stub distinction a bit because it allows you to do more with stubs than just canned responses).
When possible, you should avoid the use of mocks and the record-replay-verify approach. Tests with stubs and the arrange-act-assert approach are less brittle, and more clear because they keep a distinction between setting up behavior and assertions.
edit: since the confusion between stubs and mocks is a common one, I've blogged about the difference.