Skip to content

Commit

Permalink
Autofac automocker lifecycle was wrong. Renamed some stuff for readab…
Browse files Browse the repository at this point in the history
…ility. Was able to simplify IAutomocker interface.
  • Loading branch information
robertsimmons committed Sep 18, 2018
1 parent 0014827 commit 8505561
Show file tree
Hide file tree
Showing 7 changed files with 28 additions and 21 deletions.
2 changes: 1 addition & 1 deletion SpecsFor.Autofac.Tests/SpecsForSpecs.cs
Expand Up @@ -157,7 +157,7 @@ public class when_using_a_mock_repository : SpecsFor<MyTestSut>
private int _result;
private readonly MockRepository _repo = new MockRepository(MockBehavior.Loose);

public override AutoMock CreateMocker()
public override AutoMock CreateInternalMocker()
{
return AutoMock.GetFromRepository(_repo);
}
Expand Down
25 changes: 15 additions & 10 deletions SpecsFor.Autofac/AutofacAutoMocker.cs
Expand Up @@ -4,27 +4,32 @@

namespace SpecsFor.Autofac
{
public class AutofacAutoMocker : IAutoMocker
public class AutofacAutoMocker<TSut> : IAutoMocker where TSut : class
{
public AutoMock Mocker { get; private set; }
public AutoMock InternalMocker { get; private set; }

private readonly SpecsFor<TSut> _specsFor;

public AutofacAutoMocker(ISpecs<TSut> specsFor)
{
_specsFor = (SpecsFor<TSut>)specsFor;

InternalMocker = _specsFor.CreateInternalMocker();
}

public TSut CreateSUT<TSut>() where TSut : class
{
return Mocker.Create<TSut>();
return InternalMocker.Create<TSut>();
}

public Mock<T> GetMockFor<T>() where T : class
{
return Mocker.Mock<T>();
return InternalMocker.Mock<T>();
}

public void ConfigureContainer<TSut>(ISpecs<TSut> specsFor) where TSut : class
public void ConfigureContainer()
{
var specs = (SpecsFor<TSut>) specsFor;

Mocker = specs.CreateMocker();

specs.ConfigureMocker(Mocker);
_specsFor.ConfigureMocker(InternalMocker);
}
}
}
4 changes: 2 additions & 2 deletions SpecsFor.Autofac/SpecsFor.cs
Expand Up @@ -22,7 +22,7 @@ public virtual void ConfigureMocker(AutoMock mocker)
/// AutoMock.GetFromRepository(myRepository);
/// </summary>
/// <returns></returns>
public virtual AutoMock CreateMocker()
public virtual AutoMock CreateInternalMocker()
{
return AutoMock.GetLoose();
}
Expand All @@ -34,7 +34,7 @@ public virtual AutoMock CreateMocker()
/// <returns></returns>
protected override IAutoMocker CreateAutoMocker()
{
return new AutofacAutoMocker();
return new AutofacAutoMocker<T>(this);
}
}
}
2 changes: 1 addition & 1 deletion SpecsFor.Core/IAutoMocker.cs
Expand Up @@ -8,6 +8,6 @@ public interface IAutoMocker

Mock<T> GetMockFor<T>() where T : class;

void ConfigureContainer<TSut>(ISpecs<TSut> specsFor) where TSut : class;
void ConfigureContainer();
}
}
2 changes: 1 addition & 1 deletion SpecsFor.Core/SpecsForEngine.cs
Expand Up @@ -43,7 +43,7 @@ public void Init()

_currentBehaviors.ApplySpecInitTo(_specs);

Mocker.ConfigureContainer(_specs);
Mocker.ConfigureContainer();

_specs.InitializeClassUnderTest();

Expand Down
2 changes: 1 addition & 1 deletion SpecsFor.StructureMap/SpecsFor.cs
Expand Up @@ -11,7 +11,7 @@ public virtual void ConfigureContainer(Container container)

protected override IAutoMocker CreateAutoMocker()
{
return new StructureMapAutoMocker<T>();
return new StructureMapAutoMocker<T>(this);
}
}
}
12 changes: 7 additions & 5 deletions SpecsFor.StructureMap/StructureMapAutoMocker.cs
Expand Up @@ -7,8 +7,12 @@ public class StructureMapAutoMocker<TSut> : IAutoMocker where TSut : class
{
public MoqAutoMocker<TSut> MoqAutoMocker { get; }

public StructureMapAutoMocker()
private readonly SpecsFor<TSut> _specsFor;

public StructureMapAutoMocker(ISpecs<TSut> specsFor)
{
_specsFor = (SpecsFor<TSut>)specsFor;

MoqAutoMocker = new MoqAutoMocker<TSut>();
}

Expand All @@ -22,11 +26,9 @@ T IAutoMocker.CreateSUT<T>()
return Mock.Get(MoqAutoMocker.Get<T>());
}

public void ConfigureContainer<T>(ISpecs<T> specsFor) where T : class
public void ConfigureContainer()
{
var specs = (SpecsFor<TSut>) specsFor;

specs.ConfigureContainer(MoqAutoMocker.Container);
_specsFor.ConfigureContainer(MoqAutoMocker.Container);
}
}
}

0 comments on commit 8505561

Please sign in to comment.