У меня есть следующее определение 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);
}
}
С уважением ...