public void UsingConnectionFactoryAndExceptionListener() { IConnectionFactory connectionFactory = (IConnectionFactory)mocks.CreateMock(typeof(IConnectionFactory)); IConnection connection = (IConnection)mocks.CreateMock(typeof(IConnection)); IExceptionListener listener = new ChainedExceptionListener(); Expect.Call(connectionFactory.CreateConnection()).Return(connection).Repeat.Once(); connection.ExceptionListener = listener; LastCall.On(connection).IgnoreArguments(); Expect.Call(connection.ExceptionListener).Return(listener).Repeat.Once(); connection.Start(); LastCall.On(connection).Repeat.Twice(); connection.Stop(); LastCall.On(connection).Repeat.Once(); connection.Close(); LastCall.On(connection).Repeat.Once(); mocks.ReplayAll(); SingleConnectionFactory scf = new SingleConnectionFactory(connectionFactory); scf.ExceptionListener = listener; IConnection con1 = scf.CreateConnection(); Assert.AreEqual(listener, connection.ExceptionListener); con1.Start(); con1.Stop(); // should be ignored con1.Close(); // should be ignored IConnection con2 = scf.CreateConnection(); con2.Start(); con2.Stop(); con2.Close(); scf.Dispose(); mocks.VerifyAll(); }