public void Open_TwoResolvers_ReturnsFirstResolverStream() { // Arrange using (new ObjectFactoryContainerRegion()) { using (var ms1 = new MemoryStream()) { using (var ms2 = new MemoryStream()) { ObjectFactory.Container.RegisterType <IResourceResolverStrategy, ResourceResolverStrategy>(new ContainerControlledLifetimeManager()); var firstNode = new DummyResourceResolverNode(); firstNode.CurrentExistsMock = (pathDefinition, virtualPath) => true; firstNode.CurrentOpenMock = (pathDefinition, virtualPath) => ms1; var secondNode = new DummyResourceResolverNode(); secondNode.CurrentExistsMock = (pathDefinition, virtualPath) => true; secondNode.CurrentOpenMock = (pathDefinition, virtualPath) => ms2; ObjectFactory.Resolve <IResourceResolverStrategy>().SetFirst(firstNode).SetNext(secondNode); // Act var resolver = new ResourceResolver(); var result = resolver.Open(new PathDefinition(), "~/Test"); // Assert Assert.AreNotSame(ms2, result, "The stream for the second node was returned while the first one was expected."); Assert.AreSame(ms1, result, "The stream for the first node was not returned."); } } } }