public void Handle_WhenNextStepIsDefined_ShouldCallNextStep() { //arrange var ignoreStates = new[] { "10", "20", }; var tabItems = ignoreStates.Select(state => { Item item = ItemHelper.CreateItem(string.Empty, string.Empty); item.setProperty(StatePropertyKey, state); return(item); }); //arrange var relationshipItems = new Dictionary <string, IEnumerable <Item> >() { { TestRelationshipName, tabItems }, }; var validationContext = new ValidationContext(relationshipItems) { CurrentGECO = ItemHelper.CreateItem(string.Empty, string.Empty), RootItem = ItemHelper.CreateItem(string.Empty, string.Empty), }; Item anotherGECO = ItemHelper.CreateItem(string.Empty, string.Empty); IRelationshipNameProvider relationshipNameProvider = Substitute.For <IRelationshipNameProvider>(); relationshipNameProvider.TabName.Returns(TestRelationshipName); IGECOProvider gecoProvider = Substitute.For <IGECOProvider>(); gecoProvider.GetRelatedGECOs(anotherGECO); IStep nextStep = Substitute.For <IStep>(); string[] availableClassifications = { "Release & Change/CAD Document" }; var testClass = new TestClass(nameof(TestClass), gecoProvider, relationshipNameProvider, availableClassifications, ignoreStates); testClass.SetNext(nextStep); //act testClass.Handle(validationContext); //assert nextStep.Received(1).Handle(Arg.Any <ValidationContext>()); }