[Homework] Testing Web Services Problem 3 - Валидацията на байндинг модела не работи при подаване през тест
Здравейте,
Сблъсквам се със следния казус. Това ми е байндинг моделът за новината:
https://github.com/HPenchev/SoftUni-Projects/blob/master/WebServicesAndClound/WebServicesTesting/News/News.Services/Models/NewsPostBindingModel.cs
Навсякъде съм сложил Required както си му е редът.
Това е контролерът ми:
https://github.com/HPenchev/SoftUni-Projects/blob/master/WebServicesAndClound/WebServicesTesting/News/News.Services/Controllers/NewsController.cs
На 34 ред е методът PostNews
А това е тестът ми на контролера:
https://github.com/HPenchev/SoftUni-Projects/blob/master/WebServicesAndClound/WebServicesTesting/News/News.Controllers.Tests/ControllersTests.cs
На 84 ред се опитвам да постна новина с липсващо заглавие. И проблемът е, че успявам. Пускам дебъгера и поради някаква причина на контролера изобщо не му дреме, че заглавието липсва и ми дава ModelState = true. Интересното е, че проблемът го има само при юнит тестовете. Когато опитам да подам през постман данни с липсващо заглавие по нормален начин, засича ModelState = false и ми връща код 400. Но си нямам идея на какво се дължи това. Дали някой ще успее да помогне?
Благодаря предварително!
Аз съм го направил така - връща url и самата новина:
Има и друг вариант - подаваш името на route от WebApiConfig и то автоматично ще построи location:
DefaultApi отговаря на "api/{controller}/{id}".
С на aangelov начина се получи, и теста мина. Когато ползвам DefaultApi, нормална заявка минава и връща 201, но не мога да тествам - кара ми се по следния начин "A route named 'DefaultApi' could not be found in the route collection. Нямам идея защо прави така, може би защото е мокнато.
И аз имах същия проблем. Пробвай така:
return CreatedAtRoute("DefaultApi", new { controller = "ControllerName", id = data.Id }, data);