public void GetOptionalComponents_IsValid() { var step = new TestBuildStepWithRequirements(); var pipeline = BuildPipeline.CreateInstance(p => p.BuildSteps.Add(step)); var config = BuildConfiguration.CreateInstance((c) => { c.SetComponent(new TestOptionalComponentA()); c.SetComponent(new TestOptionalComponentB()); }); var context = new BuildContext(pipeline, config); Assert.That(step.GetOptionalComponents(context).Select(c => c.GetType()), Is.EquivalentTo(new[] { typeof(TestOptionalComponentA), typeof(TestOptionalComponentB) })); Assert.That(step.GetOptionalComponents <TestOptionalComponentA>(context).Select(c => c.GetType()), Is.EquivalentTo(new[] { typeof(TestOptionalComponentA) })); Assert.That(step.GetOptionalComponents <TestOptionalComponentB>(context).Select(c => c.GetType()), Is.EquivalentTo(new[] { typeof(TestOptionalComponentB) })); }