2013-07-20 10 views
11

Zadeklarowałem HTTP_HOST, jak pokazano poniżej.Błąd PHPUnit "niezdefiniowany indeks: HTTP_HOST"

public function testReadUser() { 

    $_SERVER['HTTP_HOST'] = "x.y"; 
    . 
    . 
    . 
} 

Mimo to phpunit podaje niezdefiniowany błąd indeksu. Dlaczego to jest?

+0

Czy możesz opublikować każdy otrzymany błąd? –

+1

"undefined index: HTTP_HOST" to była jedyna instrukcja błędu. Użyłem pliku bootstrap.php i dodałem wiersz '$ _SERVER ['HTTP_HOST'] = 'myHost';'. To rozwiązało problem. Nie wiem zbyt wiele o pliku bootstrap.php. Czy możesz mi powiedzieć, jaki jest pożytek z tego pliku i czy mogę przekazywać parametry pobierania i publikowania tego pliku do testowania plików? – Geek

+0

Mogę ci powiedzieć, ale Google "phpunit bootstrap" da ci mnóstwo odpowiednich wyników. –

Odpowiedz

3

Daje ten błąd, ponieważ uruchamiasz testy za pomocą interfejsu wiersza poleceń (CLI). CLI nie może uzyskać tych informacji, ponieważ nie ma żądań przychodzących za pośrednictwem protokołu HTTP.

+0

, ale jest to zmienna '$ _SERVER'. – srain

+0

Używam tej samej zmiennej w ten sam sposób w innym pliku testowym tego samego projektu. Używam netbeans, a nie wiersza poleceń. – Geek

+1

Z podręcznika: 'HTTP_HOST - Treść nagłówka Host: z bieżącego żądania, jeśli istnieje jeden. Oznacza to, że nie było takiego nagłówka. To przeglądarka wysyła ten nagłówek. Skonfiguruj swój netbeans, aby wysłać go po uruchomieniu testów. Jest to informacja o kawałku odczytywana z rzeczywistego żądania HTTP, a jeśli twój klient nie dostarcza tych informacji, PHP nie utworzy wspomnianego indeksu w tablicy $ _SERVER. – user2601913

23

W pliku phpunit.xml można ustawić zmienne serwera. Dodaj element php pod phpunit root:

<phpunit> 
    <php> 
     <server name='HTTP_HOST' value='http://localhost' /> 
    </php> 
</phpunit> 

Zobacz the docs aby uzyskać więcej informacji.

2

Możesz zadeklarować wartość (wymaganą przez metodę testowania) w swojej metodzie testowej.

Na przykład:

function testMethod(){ 
$_SERVER['yourvar']='yourvalue'; 
...your code making the request via phpunit to the method you are testing 
} 

Deklarując $ _SERVER w metodzie badania będzie dostępny do sposobu testowanej. Działa również dla $ _POST i $ _GET, jeśli potrzebujesz tych wartości tych wartości.

Powiązane problemy