在我的本地Windows PC上运行XAMPP并在其上提供测试页(例如http://localhost/testsite/testpage.html
)
现在在同一台机器上我运行了一个laravel 5.2的实例,我在其中有一个名为testroute
的命名路由。
我写了一个phpunit测试用例
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])
}
在TestCase.php中
$baseUrl = 'http://localhost:8000';
和.env APP_URL=http://localhost:8000
是否知道无法在phpunit中访问localhost站点?
更新
我发现即使http://www.google.com无效,它也会重定向到laravel的欢迎路线。 (测试通过,因为该页面中还有文字' Google')。基本上它正在尝试评估http://localhost:8000/www.google.com并重定向到欢迎页面。
我不确定如何在laravel的phpunit中访问外部网址。
答案 0 :(得分:0)
我把头撞在墙上很长一段时间。我不相信使用Laravel click()或visit()方法测试外部网站是否可行/有效。如果是的话,我没有看到它。
虽然我需要检查我的所有链接,但也许这个黑客可能对你有所帮助。我回到基本的php来断言网站正确返回。
$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);
}
它并没有让你一路走到你想要的东西(看到的东西),但对我而言,能够看到链接是实时且成功的。
测试速度很慢,因为它出现在x#网站上。
HTH