public void CreateMetadata() { const Behavior mockBehavior = Behavior.Strict; var metadataBuilder = Mock.Create <IMetadataBuilder>(mockBehavior); var testObject = new MetadataRepository(metadataBuilder); var environmentMetadata = Mock.Create <IEnvironmentMetadata>(mockBehavior); var hierarchyMetadata = Mock.Create <IHierarchyMetadata>(mockBehavior); var graphMetadata = Mock.Create <IGraphMetadata>(mockBehavior); var metadata = new Model.Metadata(environmentMetadata, hierarchyMetadata, graphMetadata); Mock.Arrange(() => metadataBuilder.BuildEnvironmentMetadata()).Returns(environmentMetadata); Mock.Arrange(() => metadataBuilder.BuildHierarchyMetadata(environmentMetadata)).Returns(hierarchyMetadata); Mock.Arrange(() => metadataBuilder.BuildGraphMetadata(hierarchyMetadata)).Returns(graphMetadata); var result = testObject.CreateMetadata(); Assert.Same(metadata.EnvironmentMetadata, result.EnvironmentMetadata); Assert.Same(metadata.HierarchyMetadata, result.HierarchyMetadata); Assert.Same(metadata.GraphMetadata, result.GraphMetadata); }