[英]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.