PhpUnit无法访问外部URL

时间:2016-04-11 04:47:13

标签: unit-testing laravel xampp phpunit laravel-5.2

在我的本地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中访问外部网址。

1 个答案:

答案 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