Rhino Mocks’ new Arrange, Act, Assert model…
The difference between mocks and stubs in Rhino Mock’s new triple-A model is so subtle, that I can’t really distinguish between the two (except in ordering scenarios, apparently).
Oh well…
I love the syntax. In my test:
[TestFixture]
public class When_creating_a_replication_context_based_on_information_in_the_session
{
#region Setup/Teardown
[SetUp]
public void Setup_context()
{
session = MockRepository.GenerateStub<HttpSessionStateBase>();
session.Stub(x => x["replicatedSite"]).Return("bar");
HttpRequestBase request = MockRepository.GenerateStub<HttpRequestBase>();
request.Stub(x => x["replicatedSite"]).Return(null);
HttpContextBase context = MockRepository.GenerateStub<HttpContextBase>();
context.Stub(x => x.Session).Return(session);
context.Stub(x => x.Request).Return(request);
context.Stub(x => x.Session).Return(session);
session.Stub(x => x.Add("replicatedSite", "bar"));
replicationContextFactory = new HttpParamsReplicationContextFactory(context);
replicationContext = replicationContextFactory.Create();
}
#endregion
private HttpParamsReplicationContextFactory replicationContextFactory;
private ReplicationContext replicationContext;
private HttpSessionStateBase session;
[Test]
public void Should_return_instance_of_subdomain_replication_context()
{
Assert.That(replicationContext.GetType().ToString(), Is.EqualTo("LinearJunction.Replication.Domain.SimpleReplicationContext"));
}
[Test]
public void Should_return_replicated_site()
{
Assert.That(replicationContext.ReplicatedSite, Is.EqualTo("bar"));
}
[Test]
public void Should_set_NEW_replicated_site_into_session()
{
session.AssertWasCalled(x => x.Add("replicatedSite", "bar"));
}
}