2016-04-11 6 views
1

auf meinem lokalen Windows-PC ich XAMPP leite, und es wird eine Testseite ist (wie zB http://localhost/testsite/testpage.html)PHPUnit nicht in der Lage externe URL für den Zugriff auf

nun auf der gleichen Maschine dient, habe ich eine Instanz von Laravel 5.2 läuft und ich habe eine benannte Route nannte es testroute.

Ich schreibe ein phpunit Testfälle

public function testBasicExample1() { 
    $this->visit('testroute')->see('Something'); //Passes 
} 
public function testBasicExample2() { 
    $this->visit('http://www.google.com')->see('Google'); //Passes 
} 
public function testBasicExample3() { 
    $this->visit('http://localhost/testsite/testpage.html')->see('Something Else'); 
    //Fails as it is unable to reach the desired page (Received status code [404]) 
} 

in TestCase.php $baseUrl = 'http://localhost:8000';

und in .env APP_URL=http://localhost:8000

es, dass localhost-Sites ist noch nicht in phpunit zugegriffen werden kann?

Update:

ich auch herausgefunden http://www.google.com funktioniert nicht, es auf die Begrüßungsroute Laravel wird umgeleitet wird. (Der Test wurde bestanden, da auf dieser Seite auch der Text "Google" vorhanden war). Im Grunde wurde versucht, http://localhost:8000/www.google.com zu bewerten, und das leitet auf Begrüßungsseite um.

Ich bin mir nicht sicher, wie in Laravel phpunit ich externe URL zugreifen kann.

+0

Haben Sie versucht, '$ this-> Besuch ('http: // localhost: 8000/Testsite/testpage.html')'? –

+1

Wie hilft das, dass ich keine Testsite auf localhost: 8000 laufen lasse? Ich führe Testsite auf localhost: 80, d. H. Xampp. BTW Ich habe das getestet, es funktioniert nicht. – karmendra

Antwort

0

Ich knallte damit meinen Kopf lange gegen eine Wand. Ich glaube nicht, dass es möglich/sinnvoll ist, externe Sites mit den Laravel click() - oder visit() -Methoden zu testen. Wenn es so ist, sehe ich es nicht.

Obwohl ich nur alle meine Links überprüfen musste, könnte dieser Hack für Sie hilfreich sein. Ich ging zurück zu basic php, um die korrekt zurückgegebenen Seiten zu bestätigen.

$sites = \App\Website::pluck('website'); 

    foreach($sites as $site) { 
     $file_headers = @get_headers($site); 
     if (strpos($file_headers[0], '404 Not Found') || $file_headers[0] == null) { 
      $exists = false; 
      echo " Failed on: ".$site." "; 
     } 
     else { 
      $exists = true; 
     } 
     $this->assertTrue($exists); 
    } 

Es ist nicht ganz Sie den ganzen Weg zu bekommen, was Sie wollen (etwas zu sehen), aber für mich war es gut genug, um die Verbindung war live und erfolgreich sein können, sehen.

Testen ist langsam, da es auf x # von Standorten ausgeht.

HTH