méthode d'accès Système.Web.Http.HttpConfiguration.DefaultFormatters()' a échoué

J'ai un problème avec l'unité de test de mon site WEB API contrôleur, je suis en utilisant moq pour se moquer de mon référentiel, faire l'installation et la réponse pour elle. Puis de lancer le contrôleur avec moqué de référentiel. Le problème est lorsque j'essaye d'exécuter un appel à partir de la manette j'obtiens une exception:

Tenter par la méthode
'Système.Web.Http.HttpConfiguration..ctor(Système d'.Web.Http.HttpRouteCollection)'
pour la méthode d'accès
'Système.Web.Http.HttpConfiguration.DefaultFormatters () a échoué.


au Système.Web.Http.HttpConfiguration..ctor(HttpRouteCollection
itinéraires) au Système.Web.Http.HttpConfiguration..ctor() à
EyeShield.L'Api.Les Tests.PersonsControllerTests.Get_Persons_ReturnsAllPersons()

Pour être honnête, ne pas avoir une idée de ce que pourrait être le problème ici. Faire quelqu'un a une idée de ce que pourrait être le problème ici?

Contrôleur:

using System;
using System.Net;
using System.Net.Http;
using EyeShield.Api.DtoMappers;
using EyeShield.Api.Models;
using EyeShield.Service;
using System.Web.Http;

namespace EyeShield.Api.Controllers
{
    public class PersonsController : ApiController
    {
        private readonly IPersonService _personService;

        public PersonsController(IPersonService personService)
        {
            _personService = personService;
        }

        public HttpResponseMessage Get()
        {
            try
            {
                var persons = PersonMapper.ToDto(_personService.GetPersons());
                var response = Request.CreateResponse(HttpStatusCode.OK, persons);
                return response;
            }
            catch (Exception e)
            {
                return Request.CreateErrorResponse(HttpStatusCode.BadRequest, e.Message);
            }
        }
    }
}

Mondiale.asax:

using EyeShield.Data.Infrastructure;
using EyeShield.Data.Repositories;
using EyeShield.Service;
using Ninject;
using Ninject.Web.Common;
using System;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Routing;
namespace EyeShield.Api
{
public class MvcApplication : NinjectHttpApplication
{
protected override void OnApplicationStarted()
{
base.OnApplicationStarted();
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
WebApiConfig.ConfigureCamelCaseResponse(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
protected override IKernel CreateKernel()
{
var kernel = new StandardKernel();
kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
RegisterServices(kernel);
//Install our Ninject-based IDependencyResolver into the Web API config
GlobalConfiguration.Configuration.DependencyResolver = new NinjectDependencyResolver(kernel);
return kernel;
}
private void RegisterServices(IKernel kernel)
{
//This is where we tell Ninject how to resolve service requests
kernel.Bind<IDatabaseFactory>().To<DatabaseFactory>();
kernel.Bind<IPersonService>().To<PersonService>();
kernel.Bind<IPersonRepository>().To<PersonRepository>();
}
}
}

De Test De L'Unité:

using System.Collections.Generic;
using EyeShield.Api.Controllers;
using EyeShield.Api.DtoMappers;
using EyeShield.Api.Models;
using EyeShield.Service;
using Moq;
using NUnit.Framework;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Hosting;
namespace EyeShield.Api.Tests
{
[TestFixture]
public class PersonsControllerTests
{
private Mock<IPersonService> _personService;
[SetUp]
public void SetUp()
{
_personService = new Mock<IPersonService>();
}
[Test]
public void Get_Persons_ReturnsAllPersons()
{
//Arrange
var fakePesons = GetPersonsContainers();
_personService.Setup(x => x.GetPersons()).Returns(PersonMapper.FromDto(fakePesons));
//here exception occurs
var controller = new PersonsController(_personService.Object)
{
Request = new HttpRequestMessage()
{
Properties = { { HttpPropertyKeys.HttpConfigurationKey, new HttpConfiguration() } }
}
};
//Act
var response = controller.Get();
string str = response.Content.ReadAsStringAsync().Result;
//Assert
Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
}
private static IEnumerable<PersonContainer> GetPersonsContainers()
{
IEnumerable<PersonContainer> fakePersons = new List<PersonContainer>
{
new PersonContainer {Id = 1, Name = "Loke", Surname = "Lamora", PersonalId = "QWE654789", Position = "Software Engineer"},
new PersonContainer {Id = 2, Name = "Jean", Surname = "Tannen", PersonalId = "XYZ123456", Position = "Biology Lab Assistant"},
new PersonContainer {Id = 3, Name = "Edward", Surname = "Crowley", PersonalId = "ABC654789", Position = "System Infrastructure"}
};
return fakePersons;
}
}
}
  • J'ai exactement le même problème. Avez-vous déjà fait ce qui s'est passé ici?
  • Résolu le problème, mais la mise à jour de toutes les bibliothèques du projet.
InformationsquelleAutor Avangar | 2014-05-02