gpt4 book ai didi

php - 如何使用 phpunit 测试位于 symfony 的 web 文件夹中的静态文件?

转载 作者:可可西里 更新时间:2023-10-31 23:16:06 26 4
gpt4 key购买 nike

系统信息:

  • PHPUnit 5.7.4
  • PHP 7.0.13
  • 交响乐 3.2.1

我正在尝试点击“下载”页面上的链接并验证文件是否可下载,但是当我点击链接时 $client->click($crawlerDownload->link());我得到一个 404。 symfony $client 无法访问 web 目录中的静态文件吗?我该如何测试?

favicon 测试是测试用例的简化版本。

public function testPressDownload()
{
$client = static::createClient();
$client->followRedirects(false);

//create fixture file
$kernelDir = $client->getKernel()->getRootDir();
$file = "${kernelDir}/../web/download/example.zip";
file_put_contents($file, "dummy content");


$crawler = $client->request('GET', '/files');
$this->assertEquals(200, $client->getResponse()->getStatusCode()); //ok

$crawlerDownload = $crawler
->filter('a[title="example.zip"]')
;
$this->assertEquals(1, $crawlerDownload->count()); //ok


$client->click($crawlerDownload->link());
$this->assertEquals(200, $client->getResponse()->getStatusCode()); //fails 404
}


public function testFavicon()
{
$crawler = $client->request('GET', '/favicon.ico');
$this->assertEquals(200, $client->getResponse()->getStatusCode()); //fails 404
}

最佳答案

你不能,测试是引导应用程序,它不是“真正的网络服务器”,所以当请求 /favicon.ico 时,它会在应用程序中搜索与该路径对应的路由没有找到。

为了验证这一点,创建一个假路由:

/**
* @Route("/favicon.ico", name="fake_favicon_route")
*
* @return Response
*/

您会看到测试现在通过了。

关于php - 如何使用 phpunit 测试位于 symfony 的 web 文件夹中的静态文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41516538/

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