2014-09-23 12 views
10

Spędziłem kilka dni próbując naśladować, odgadnąć i podrobić moją drogę do testowalnej aplikacji. Zwykle nie testuję działań kontrolera, ale zamiast tego testuję wszystkie inne klasy i wzorce.Czy można przetestować projekt ASP.NET MVC z routingiem atrybutów?

Ściana, którą trafiłem, zawiera nową funkcję wyznaczania atrybutu. Chociaż mogę używać klas routingu do rejestrowania reguł itp. Otrzymuję ten błąd, gdy wywoływana jest MapMvcAttributeRoutes.

Metoda ta nie może być wywołana podczas aplikacji pre-start fazy inicjalizacji

to omówione tutaj.

MapMvcAttributeRoutes: This method cannot be called during the application's pre-start initialization phase

Szczerze mówiąc, nie mogę zrozumieć odpowiedź (y). Nie kod, ale jego rozdrobniona w wersjach, linki do innych robaków, GitHub itp

jestem nieco zagubiony jak do dolnej linii odpowiedź:

Począwszy od 23 października 2014. Czy to możliwe, zarejestrować wszystkie trasy w warunkach testowych, jakiej wersji MVC potrzebuję i do jakich klas/metod mam to zrobić?

Obecnie moje zajęcia z wykorzystaniem UrlHelper są pomijane, ponieważ brakuje potrzebnych tras. Wstrzykuję podklasy, aby ominąć ten problem, ale nie sądzę, żeby było nierozsądnym fałszować środowisko środowiska wykonawczego MVC i aby moja aplikacja działała bez dużej ilości akrobacji DI.

Byłoby miło, gdyby to było proste pomocnika w ramach samego które mogłyby wziąć obiekt JSON opisujący żądania HTTP surowe i mają kontroler, HttpContext, ControllerContext itp itd wszystko stworzone właściwie tak, jakby były prawdziwe żądanie od drutu.

Dzięki,

Luke

+0

Chociaż jest to dla WebAPI, to powinno działać whould myślę .. używa makiety UrlHelper ... http : //www.asp.net/web-api/overview/testing-and-debugging/unit-testing-controllers-in-web-api –

+0

Obecnie albo kpię z 'UrlHelper' albo mam' HyperlinkModel', który reprezentuje link i podklasę I mój 'HyperlinkModelBuilder' i udawaj logikę budowania głównego łącza. –

Odpowiedz

4

Dobre pytanie i myślę, że odpowiedź jest taka, że ​​niewiele lub nie myśl dano trasach testowych w projektowaniu tej części ramy. Mogą istnieć sposoby testowania tras, ale będą one pośrednie, nieudokumentowane i podatne na zerwanie, gdy pojawi się nowa wersja MVC.

na temat moich doświadczeń na ten temat. Proponuję również, abyś również campaign for better testability in ASP vNext in the public issue tracker.

0

Podczas codziennego występu, kolega wspomniał, że był testem integracyjnym za pośrednictwem wewnętrznego serwera pamięci. Zaintrygowany, pokazał mi, jak byłem zaskoczony, nauczyłem się czegoś :-)

Możesz dodać nową instancję HttpServer i odczytać konfigurację, a następnie wywołać instancję serwera. Nie próbowałem go, ale nie widzę powodu, dla którego to nie wyliczyłoby twoich tras i kod wymagający poprawnej konfiguracji będzie działał.

ten SO pytanie jest związane i mogą pomóc w jaki sposób skonfigurować to:

How does the In-Memory HttpServer know which WebAPI project to host?

+0

Może to przerwać testy integracyjne, ale nie testy jednostkowe: instalacja zajmie zbyt dużo czasu. – MarioDS

+0

Moglibyśmy mieć filozoficzną debatę na temat tego, czym jest testowanie jednostkowe i izolacja, i możesz mieć pewne uczciwe punkty, ale w miarę upływu czasu, w praktyce okazało się, że było dobrze. –

Powiązane problemy