public void LifetimeScopeDispose_WithWhenScopeEndsRegistration_CallsTheRegisteredAction() { // Arrange int actionCallCount = 0; var container = new Container(); var lifestyle = new LifetimeScopeLifestyle(); container.Register <DisposableCommand, DisposableCommand>(lifestyle); container.RegisterInitializer <DisposableCommand>(command => { lifestyle.WhenScopeEnds(container, () => { actionCallCount++; }); }); using (container.BeginLifetimeScope()) { container.GetInstance <DisposableCommand>(); // Act } // Assert Assert.AreEqual(1, actionCallCount, "Delegate is expected to be called exactly once."); }
public void WhenScopeEnds_NullContainerArgument_ThrowsException() { // Arrange var lifestyle = new LifetimeScopeLifestyle(); // Act Action action = () => lifestyle.WhenScopeEnds(null, () => { }); // Assert AssertThat.Throws <ArgumentNullException>(action); }
public void Verify_WithWhenScopeEndsRegistration_Succeeds() { // Arrange var container = new Container(); var lifestyle = new LifetimeScopeLifestyle(); container.Register <ICommand, DisposableCommand>(lifestyle); container.RegisterInitializer <DisposableCommand>(command => { lifestyle.WhenScopeEnds(container, () => { }); }); // Act container.Verify(); }
public void WhenScopeEnds_CalledOutOfTheContextOfALifetimeScope_ThrowsException() { // Arrange var lifestyle = new LifetimeScopeLifestyle(); var container = new Container(); container.RegisterLifetimeScope <ConcreteCommand>(); try { // Act lifestyle.WhenScopeEnds(container, () => { }); // Assert Assert.Fail("Exception expected."); } catch (InvalidOperationException ex) { Assert.IsTrue(ex.Message.Contains( "This method can only be called within the context of an active Lifetime Scope."), "Actual: " + ex.Message); } }