public void Build_Execute_ExpectedBehaviour(bool hasNextHandler, bool hasAppendHandlers) { // Arrange var handlerMock = Substitute.For <IApiHttpRequestHandler>(); var factoryMock = Substitute.For <IApiHttpHandlerFactory>(); factoryMock.GetHandler(typeof(ApiHttpRequestHandlerMock)).Returns(handlerMock); var binding = new ApiHttpRequestHandlerBinding(factoryMock, typeof(ApiHttpRequestHandlerMock)); var nextHandlersAssert = hasNextHandler ? ArrangeNext(handlerMock, binding) : () => handlerMock.Received(0).SetNextHandler(Arg.Any <IApiHttpRequestHandler>()); var appendHandlersAssert = hasAppendHandlers ? ArrangeHandlers(handlerMock, binding) : () => handlerMock.Received(0).AppendHandler(Arg.Any <IApiHttpRequestHandler>()); // Act var handler = binding.Build(); // Assert Assert.Same(handlerMock, handler); nextHandlersAssert.Invoke(); appendHandlersAssert.Invoke(); }