Loading...
ALEXXX avatar ALEXXX 4 Точки

[Exam Preparation] Проблем с integration tests и с превода на LINQ към Entities

Започнах да решаам лаба придържах се кум условието, но какво ли не правих тестовете не минаат и не минаат.

Това е проекта https://github.com/alexxx6/Web-Services-And-Cloud/tree/master/Online-Shop

 

Другия ми проблем е когато използвам статичен метод за създаване на  ViewModel в LINQ ми казва, че не разпознава този метод и не може даго преведе към Entities. Не мога да разбера какъв му е проблема след като е показвано в лекциите, а и аз съм го правел  в предходни домашни. Опитах през пропърти, но и то не проработи.

Това е проекта https://github.com/alexxx6/Web-Services-And-Cloud/tree/master/BugTracker

0
C# Web Services & Cloud 06/09/2015 20:01:19
a_rusenov avatar a_rusenov 1103 Точки

За тестовете никой не може да ти каже - дебъгни си ги и виж защо гърмят.

Относно Create метода във view моделите - погледни първия лаб за Online Shop и обърни внимание там как го правим. Това не е обикновен метод, а пропърти, което връща Expression<Func<Ad, AdViewModel>>, където Ad ти е entity-то, а AdViewModel е обектът, в който проектираш данните. Важно е връщаният тип да е Expression, иначе EF няма да може да преведе проекцията към SQL.

1
06/09/2015 22:37:53
ALEXXX avatar ALEXXX 4 Точки

Логин теста ми връща респонс със статус код 404 NodFound без никакъв месидж. Написах един тест за метода GetAds който е без аутинтикация и ми върна InternalServerError.

 

Еxpression пропъртито също не работи както съм спомена във въпроса, но опитах отново и пак не сработи.

Грешката която ми хвърля е: "The LINQ expression node type 'Lambda' is not supported in LINQ to Entities"

0
09/09/2015 16:14:54
a_rusenov avatar a_rusenov 1103 Точки

Create expression-ът трябва да се подаде по следния начин:

.Select(BugViewModel.Create);

Предполагам слагаш ламбда (=>) и се получава двойно => и затова гърми.

Относно дадените тестовете - те ли не ти минават? Ако твой тест ти връща InternalServerError то значи нещо в твоя код е хвърлило ексепшън и той не е бил обработен. Сложи breakpoint в началото на екшъна, който тестваш, и виж къде с какво гърми.

1
08/09/2015 13:52:14
ALEXXX avatar ALEXXX 4 Точки

Ок прав беше за ламбдата.

 

Написал по точно преписал съм само теста за login и PostAdWithInvalidAdTypeShouldReturn400BadRequest които бяха дадени в заданието те бяха почти написани имаха само 1-2 todo-та за assert-те които дописах. Единствено аз  написах тест за взимне на всички обяви и другото което направих е, че пренаписа нещата да се постват анонимнм обяви, но и двата теста гръмнаха с InternalServerError.

Дебъгвам откакто възникна лроблема, но когато сложа breakpoint на екшъна който тествам и почна да дебъгвам то не спира там, а спира чак на асърта който гърми

ПС: В postman всичко рабити.

0
08/09/2015 21:08:37
a_rusenov avatar a_rusenov 1103 Точки

Ок, а този InternalServerError с какво съобщение гърми?

0
ALEXXX avatar ALEXXX 4 Точки

Всичко си тръгна испусналсам 2 реда в AssemblyInitialize метод.

 

Пак се връщам на view моделите. Примерно ми се налага да върна проеккция на новосъздаден обект както е в OnlineShop-a когато поствам нова обява, възможно ли е да подам обекта който съм създал на това пропърти, а не да правя допънителна заявка както правя в OnlineShop само и само да ползвам пропъртито

0
a_rusenov avatar a_rusenov 1103 Точки

Идеята да правиш допълнителна заявка е, че някои данни за обекта ги нямаш дръпнати, а ти трябват в проекцията.

Иначе ако можеш, давай без заявка, само внимавай да не генерираш допълнителни заявки от невнимание.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.