public void when_using_a_visitor() { //setup var controller = new PropertyBagVersionController<FlatPropertyBag>(TestHelper.CreateWithNonDefaultProperties<FlatPropertyBag>(), _testHelper.MakeConfiguredCloneFactoryFor<FlatPropertyBag>(), _testHelper.EmptyChangeSet(), _testHelper.MakeConfiguredVisitorFactory(), _testHelper.MakeConfiguredProxyFactory()); var fakeChildren = new[] {A.Fake<IVersionControlNode>(), A.Fake<IVersionControlNode>()}; var fakeVisitor = A.Fake<IVersionControlTreeVisitor>(); controller.Children.AddRange(fakeChildren); //act controller.Accept(fakeVisitor); //assert A.CallTo(() => fakeChildren.First().RecursiveAccept(fakeVisitor)).MustHaveHappened(); A.CallTo(() => fakeChildren.Last().RecursiveAccept(fakeVisitor)).MustHaveHappened(); A.CallTo(() => fakeVisitor.OnEntry(controller)).MustHaveHappened(); }