![](/img/trans.png)
[英]Symfony's DomCrawler how can I extract meta description from html source
[英]How do I use the Symfony DomCrawler with Laravel's subdomain routing?
目前,我的网站旨在服务于多个子域,如下所示:
Route::group(array('domain' => 'site1'.AppHelper::getDomain()), function(){
Route::get('{state?}/{variant?}', array("uses" => 'Site1Controller@showIndex'));
});
Route::group(array('domain' => 'site2'.AppHelper::getDomain()), function(){
Route::get('{state?}/{variant?}', array("uses" => 'Site2Controller@showIndex'));
});
Route::group(array('domain' => 'site3'.AppHelper::getDomain()), function(){
Route::get('{state?}/{variant?}', array("uses" => 'Site3Controller@showIndex'));
});
现在,我想编写一些测试,以对这些页面进行爬网以检查特定内容。 不幸的是,我可以在Symfony DomCrawler上找到的唯一子域文档告诉我执行此操作(假设这是我测试的第312行):
$crawler = $this->$client->request('GET', '/', array(), array(), array(
'HTTP_HOST' => 'site1.domain.dev',
'HTTP_USER_AGENT' => 'Symfony/2.0',
));
不幸的是,当我运行PHPUnit并进入该测试时,我看到了以下内容:
1) SiteTest::testSite1ForContent
Symfony\Component\HttpKernel\Exception\NotFoundHttpException:
/var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php:1429
/var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php:1050
/var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php:1014
/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:576
/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:597
/var/www/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Client.php:81
/var/www/vendor/symfony/browser-kit/Symfony/Component/BrowserKit/Client.php:339
/var/www/app/tests/SiteTest.php:312
那我在这里不了解什么呢? site1.domain.dev肯定可以正常解决,并且没有我看到的问题。 尝试强制为子域添加标头似乎是一个特定的问题。
即使没有解决方案,如何正确调试呢? 我想弄清楚为什么它不起作用/哪里失败了,因为这是我第一次编写测试。
我开始了一个空白项目,该项目只是尝试使用子域路由来处理此问题,并且效果很好。 我意识到问题必须出在我写的东西上。
事实证明,问题实际上出在我为检索域而编写的帮助程序中。 它试图访问$ _SERVER在运行时不可用的var。 如果无法检索值,则返回一个dev域解决了我的问题。
试试这个:
public function refreshApplication()
{
parent::refreshApplication();
$this->client = $this->createClient(
array('HTTP_HOST' => 'site1.domain.dev'));
}
public function testSomething()
{
$crawler = $this->client->request('GET', '/something');
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.