gpt4 book ai didi

php - 在 Controller 中使用爬虫

转载 作者:可可西里 更新时间:2023-11-01 13:23:06 25 4
gpt4 key购买 nike

// src/Acme/DemoBundle/Tests/Controller/DemoControllerTest.php
namespace Acme\DemoBundle\Tests\Controller;

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;

class DemoControllerTest extends WebTestCase
{
public function testIndex()
{
$client = static::createClient();

$crawler = $client->request('GET', '/demo/hello/Fabien');

$this->assertGreaterThan(0, $crawler->filter('html:contains("Hello Fabien")')->count());
}
}

这在我的测试中工作正常,但我也想在 Controller 中使用这个爬虫。我该怎么做?

我制定路线,并添加到 Controller :

<?php

// src/Ens/JobeetBundle/Controller/CategoryController

namespace Acme\DemoBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Acme\DemoBundle\Entity\Category;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;

class CategoryController extends Controller
{
public function testAction()
{
$client = WebTestCase::createClient();

$crawler = $client->request('GET', '/category/index');
}

}

但这会返回错误:

Fatal error: Class 'PHPUnit_Framework_TestCase' not found in /acme/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Test/WebTestCase.php on line 24

最佳答案

WebTestCase 类是一个特殊类,设计用于在测试框架 (PHPUnit) 中运行,您不能在 Controller 中使用它。

但是你可以像这样创建一个 HTTPKernel 客户端:

use Symfony\Component\HttpKernel\Client;

...

public function testAction()
{
$client = new Client($this->get('kernel'));
$crawler = $client->request('GET', '/category/index');
}

请注意,您将只能使用此客户端浏览您自己的 symfony 应用程序。如果您想浏览外部服务器,则需要使用其他客户端,例如 goutte。

此处创建的爬虫与 WebTestCase 返回的爬虫相同,因此您可以遵循 symfony testing documentation 中详述的相同示例。

如果您需要更多信息,here是爬虫组件的文档,here是类引用

关于php - 在 Controller 中使用爬虫,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12282806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com