public void ExecuteBindingAsync_CallsGetPerRequestFormatterInstance_BeforeBinding() { // Arrange Mock<HttpParameterDescriptor> parameter = new Mock<HttpParameterDescriptor>(); Mock<MediaTypeFormatter> formatter = new Mock<MediaTypeFormatter>(); MediaTypeFormatter perRequestFormatter = new Mock<MediaTypeFormatter>().Object; MockPerRequestParameterBinding binding = new MockPerRequestParameterBinding(parameter.Object, new[] { formatter.Object }); HttpRequestMessage request = new HttpRequestMessage(); request.Content = new StringContent("{}"); request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/something"); HttpControllerContext controllercontext = new HttpControllerContext { Request = request }; HttpActionContext actionContext = new HttpActionContext(controllercontext, new Mock<HttpActionDescriptor>().Object); MediaTypeFormatter formatterUsedForPrameterBinding = null; binding.CreateInnerBindingFunc = (formatters) => { formatterUsedForPrameterBinding = formatters.Single(); return new VoidParameterBinding(); }; formatter .Setup(f => f.GetPerRequestFormatterInstance(parameter.Object.ParameterType, request, request.Content.Headers.ContentType)) .Returns(perRequestFormatter); // Act binding.ExecuteBindingAsync(new Mock<ModelMetadataProvider>().Object, actionContext, new CancellationToken()); // Assert Assert.Same(formatterUsedForPrameterBinding, perRequestFormatter); }