public void NullSender_Ctor_Throws() { IItemRepository repo = new MockItemRepository(); IFooProcessor processor = new StubFooProcessor(); IFooSender sender = null; var workflow = new FooWorkflow(repo, processor, sender); }
public FooWorkflowFactory(IItemRepository repo, IFooProcessor processor, IFooSender sender) { if (repo == null) { throw new ArgumentNullException("repo"); } if (processor == null) { throw new ArgumentNullException("processor"); } if (sender == null) { throw new ArgumentNullException("sender"); } _itemRepository = repo; _processor = processor; _sender = sender; }
//A large number of dependencies can indicate that the class is trying to do too much. //This is probably fine, but if the workflow becomes much longer, and introduces a lot //more dependencies, we may want to refactor. //As Mark Seeman says, "Constructor injection makes Single Responsibility Principle violations //glaringly obvious." public FooWorkflow(IItemRepository repo, IFooProcessor processor, IFooSender sender) { if (repo == null) { throw new ArgumentNullException("repo"); } if (processor == null) { throw new ArgumentNullException("processor"); } if (sender == null) { throw new ArgumentNullException("sender"); } _itemRepository = repo; _processor = processor; _sender = sender; }