модульный тест для запуска API-MVC не удается и отладка работает - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть следующее определение UnitTest для тестирования контроллера в веб-проекте Api MVC:

public class PersonsControllerTest
{
    Api.Controllers.PersonsController controller;
    IPersonsRepository repository;

    public PersonsControllerTest()
    {
        AutoMapper.Mapper.Initialize(cfg =>
        {
            ProjectPersons.Model.MapConfiguration.Configure(cfg);
        });

        this.repository = ProjectPersons.Model.ProjectPersonsServiceLocator.Get<IPersonsRepository>();
        this.controller = new Api.Controllers.PersonsController(repository);
    }


    [TestMethod]
    public void GetPersons()
    {
        IEnumerable<PersonsVO> response = controller.index();

        Assert.IsNotNull(response);
        //Assert.IsInstanceOfType(response, GetType(IEnumerable<PersonsVO>));            
    }

    [TestMethod]
    public void CreatePerson()
    {
        string name = "Juan Perez";
        string about = "Gran Empleado";

        PersonsVO person = new PersonsVO()
        {
            Name = name,
            About = about,
        };

        IHttpActionResult response = controller.add(person);

        Assert.IsNotNull(response);
        Assert.IsTrue((response.GetType() == typeof(OkNegotiatedContentResult<PersonsVO>)));

        PersonsVO personCreated = ((OkNegotiatedContentResult<PersonsVO>)response).Content;

        Assert.AreEqual(name, personCreated.Name);
        Assert.AreEqual(about, personCreated.About);
    }
}

Когда я запускаю тест, CreatePerson () завершается ошибкой, но если я отлаживаю тест CreatePerson (), то онработает.

Есть идеи?Когда я запускаю тест, Assert, что Fails - это Assert.IsTrue ((response.GetType () == typeof (OkNegotiatedContentResult))), но если я отлаживаю тест, этот Assert действителен.

ДобавлениеМетод примерно такой:

public IHttpActionResult add(PersonsVO person)
        {
            if (ModelState.IsValid)
            {
                if ( person.Id == null || person.Id == Guid.Empty)
                {
                    person.Id = Guid.NewGuid();
                }

                try
                {
                    if (personsRepository.GetAll().Where(c => c.Id == person.Id).Any())
                    {
                        PersonsVO personToUpdate = personsRepository.GetAll().Where(c => c.Id == person.Id).FirstOrDefault();

                        personToUpdate.Name = person.Name;
                        personToUpdate.About = person.About;

                        personsRepository.Update(personToUpdate);

                        return Ok(personToUpdate);
                    }
                    else
                    {
                        personsRepository.Add(person);
                        return Ok(person);
                    }
                }
                catch (Exception e)
                {
                    return BadRequest("One or more fields are incorrect");
                }
            }
            else
            {
                return BadRequest(ModelState);
            }

        }

С уважением ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...