2013-02-05 13 views
11

Próbuję wykonać kilka testów jednostkowych dla projektu Web API. Zamierzam zasymulować środowisko hostingu web API. Wygląda na to, że mógłbym używać hosta pamięci (HttpServer) lub hosta własnego (HttpSelfHostServer).Unit Testowanie Web API przy użyciu HttpServer lub HttpSelfHostServer

Zastanawiasz się, jaka jest różnica i która technologia jest dobra do czego i czy istnieje jakiekolwiek ograniczenie dla tych opcji.

Odpowiedz

12

Należy używać hosta pamięci do testów end-to-end, a następnie oddzielnie testować połączenie sieciowe w swoim środowisku.

Dla wielu powodów:

  • W przyjmującym pamięci, jak sama nazwa wskazuje, działa całkowicie w pamięci, więc będzie dużo szybciej

  • gospodarz Własna należy uruchomić z podwyższonymi uprawnieniami, więc twoje testy będą musiały zostać wykonane w kontekście tożsamości "admin". Jest to dalekie od pożądanego. Szczególnie kłopotliwe jest wykonanie testów ze skryptów budujących lub PowerShell, ponieważ w rezultacie procesy te musiałyby być uruchamiane z podwyższonymi uprawnieniami. Co więcej, będzie to musiało się zdarzyć na każdym z testowanych serwerów.

  • W trybie samoobsługowym kończy się testowanie stosu sieciowego danego systemu operacyjnego, którego naprawdę nie należy testować - ponieważ może się on różnić w różnych środowiskach (rozwój, wdrażanie, kontrola jakości, produkcja itd.). Na przykład - dany port może nie być dostępny. W rezultacie możesz zostać przeciągnięty na niepotrzebne próby debugowania na różnych komputerach, aby nawet uruchomić testy.

  • Wreszcie testowanie przy użyciu własnej hostingu, jeszcze nie gwarantuje, że usługa będzie działać prawidłowo, jeśli web-serwer i odwrotnie - więc równie dobrze można po prostu test pamięci

+4

Robisz nie potrzebować uprawnień administratora zawsze, aby uruchomić własny host. Musisz dodać 'config.HostNameComparisonMode = System.ServiceModel.HostNameComparisonMode.Exact;', aby uruchomić jako nie-admin, jeśli słuchasz lokalnie. –

+1

tak dobry punkt - nadal dość dużo bólu, ale –

+0

Polecam używać Owin 'TestServer'. link: http://www.juliencorioland.net/archives/using-owin-to-test-your-web-api-controllers#.U9cQE2NraM4 – Youngjae

Powiązane problemy