public void should_propagate_unit_tag([Values(null, "tag")] string tag) { var expected = new MemoryStream(); // --arrange var buildSession = A.Fake <IBuildSession>(); A.CallTo(() => buildSession.BuildChain).Returns(Unit.IsType <IDisposable>().Tag(tag).ToBuildChain()); var buildUnitCall = A.CallTo(() => buildSession.BuildUnit(Unit.IsType <MemoryStream>().Tag(tag))); buildUnitCall.Returns(expected.ToBuildResult()); var target = new RedirectType(typeof(MemoryStream), SpecialTag.Propagate); // --act target.Process(buildSession); // --assert buildSession.BuildResult.Value.Should().Be(expected); buildUnitCall.MustHaveHappenedOnceAndOnly(); }