PHPUnit是面向程序员的PHP测试框架。它是单元测试框架的xUnit体系结构的一个实例。
我正在 phpunit 中创建测试,我需要在数据库中设置虚拟数据。这些虚拟数据将在所有单元测试类中使用,因此我只需要设置一次。目前,我
PHPUnit:预期状态代码 200,但使用 Laravel 收到 419
我想测试删除方法,但我没有从 PHPUnit 获得预期的结果。运行测试时我收到此消息: 预期状态代码 200,但收到 419。断言失败 ...
PHPUnit backupGlobals 选项:它的用途是什么?
我不明白PhpUnit中backupGlobals选项的定义和用法。 PhpUnint 9.6 文档指出: XML 配置文件的文档: “PHPUnit 可以选择...
我使用 PHP 8.0.5、PHPUnit 9.5.4、PHPStorm 2021.1.2。 当我在 XML 配置文件中使用以下内容时: 我使用 PHP 8.0.5、PHPUnit 9.5.4、PHPStorm 2021.1.2。 当我在我的 XML 配置文件中使用这个时: <coverage pathCoverage="true"> <report> <clover outputFile="./coverage.xml"/> </report> </coverage> (这只是我文件的相关部分) ...并从 PHPStorm 启动“运行覆盖率”命令,它不会生成覆盖率报告。 我已停用 XDebug。 PHPStorm 向我展示: 警告:必须设置 XDEBUG_MODE=coverage 或 xdebug.mode=coverage 我不知道为什么它提到 XDebug,因为我想使用 pcov,因为我在“运行/调试配置”popin 中设置了它。 我尝试将报告放在另一个文件夹中,尝试生成 HTML 报告...通过终端启动命令...这些都不起作用。我在 Google 上没有找到任何关于我的问题的信息。 编辑 我尝试使用根本未加载的 XDebug 和这个简化的配置(使用 --generate-configuration 参数创建)并添加了之前的代码(没有路径覆盖)。 <?xml version="1.0" encoding="UTF-8"?> <phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.5/phpunit.xsd" bootstrap="TestBootstrap.php" cacheResultFile=".phpunit.cache/test-results" executionOrder="depends,defects" forceCoversAnnotation="true" beStrictAboutCoversAnnotation="true" beStrictAboutOutputDuringTests="true" beStrictAboutTodoAnnotatedTests="true" failOnRisky="true" failOnWarning="true" verbose="true"> <testsuites> <testsuite name="default"> <directory suffix="Test.php">./src/BlocksTest.php</directory> </testsuite> </testsuites> <coverage cacheDirectory=".phpunit.cache/code-coverage" processUncoveredFiles="true"> <include> <directory suffix=".php">../src</directory> </include> <report> <clover outputFile="./coverage.xml"/> </report> </coverage> </phpunit> 即使图书馆说:它仍然不起作用 生成 Clover XML 格式的代码覆盖率报告... 当然有很多方法可以回答这个问题,在我们寻找答案的同时,我留下了一些初稿。 您的 Phpunit XML 配置: <coverage pathCoverage="true"> <report> <clover outputFile="./coverage.xml"/> </report> </coverage> 具有 pathCoverage 属性 true 值。 [在 Phpunit 9.5 中] pathCoverage 属性 [...] 当设置为 true 时 [..] 这需要支持路径覆盖的代码覆盖驱动程序。路径覆盖目前仅由 Xdebug 实现。 所以你无法使用 pcov 获得此代码覆盖率报告。 您的 Phpunit 配置不兼容。 当 Phpunit(通过 sebastianbergman/php-code-coverage)显示此警告时: 警告:必须设置 XDEBUG_MODE=coverage 或 xdebug.mode=coverage 这意味着它检测到 xdebug 扩展可用,但未以使用它的方式进行配置,因此提示要更改哪些参数。 如果您在命令行 (CLI) 上使用 xdebug 模式环境参数重播最后一个命令,则测试运行通常最容易: $ XDEBUG_MODE=coverage !! # press enter 否则这两个选项中的任何一个都适用于 PHP,请适当配置运行作业。 但是如果你不关心 xdebug 而是 pcov 我不知道为什么它提到 XDebug,因为我想使用 pcov,因为我在“运行/调试配置”popin 中设置了它[在 PhpStorm 中]。 有关 xdebug 配置的警告讲述了一个不同的故事:xdebug 和 pcov 是互斥的 和 如果你想使用 PCOV 作为 php-code-coverage 的驱动程序,Xdebug 一定不能被加载。 这意味着 - 正如原始警告所示,Xdebug is 已加载 - 必须首先卸载它。 PhpStorm 不能卸载已配置 PHP 版本的扩展。它的作用是根据您的选择添加扩展和配置设置。 在 PhpStorm 中,与命令行 (CLI) 类似,您可以控制环境参数以及 PHP 可执行文件的命令行参数。 如果系统上 php 可执行文件的现有配置加载过多,作为最后的手段,您可以首先使用 -n 开关禁用所有扩展,然后根据需要添加扩展。 -d extension=<extension> [ini.扩展] 一些扩展如 xdebug 需要作为 zend 扩展加载: -d zend_extension=<zend_extension> [ini.zend-扩展] 有关 PHP 命令行选项的说明,请参阅 命令行选项[DOCS]。 有关各种配置选项的说明,请参阅: 您的 PHP 发行版附带的已注释的 php.ini 文件 PHP 手册中的相应页面(它还有一个 php.ini 指令列表[DOCS]) 扩展作者的附加文档,例如Xdebug 主页通常有详细的配置说明并涵盖所有 ini 设置。
对于我的项目来说,理想的情况是我只需要在数据库中存储时间(学说 type="time_immutable")。然而它会导致 phpunit 出现问题,我找不到任何有效的解决方案。 当我尝试...
我正在实现一些逻辑,要求代码在生产环境中表现不同。 我想编写一个测试来断言这确实发生了,但我很难嘲笑
我有一个简单的类,它包装了序列化/反序列化对象数组并将它们添加到会话中,我想测试它。 我得到的错误是 没有会话可用...
我在单元测试中模拟数据库查询: 命名空间测试\功能\模型; 使用App\Models\Access; 使用应用\模型\用户; 使用 Illuminate\Database\Eloquent\Collection; 使用测试\测试用例; 使用模拟...
Laravel 5.4;如何从 Laravel 包运行单元测试?
我正在尝试开发一个 Laravel Composer 包并在其中运行单元测试。在花了过去几天阅读各种过时且相互矛盾的指南和博客文章后,我
使用 SQLite 内存 DB 进行 Symfony / Doctrine 单元测试
我仍在进行 PHP 单元测试,以测试我的 symfony2 控制器。我的测试类是 WebTestCase 的派生,测试正在执行 GET 或 POST 请求来检查一切是否正常...
有关于如何在 PHPUnit 中使用 setUp() 和tearDown() 的真实例子吗?
方法setUp()和tearDown()在每次测试之前和之后被调用。但实际上,有没有任何真实的例子说明我为什么需要这个? 检查别人的测试,我总是看到一些东西......
我希望 getNumber 在测试用例中返回 200,但是当我运行测试并使用 $response->dump() 检查结果时,我可以看到模拟没有覆盖该方法,因为它显示数组。 .
PHPunit 抛出错误“检测到 PHPUnit Polyfill 版本不匹配”。请确保加载 PHPUnit Polyfills 1.1.0 或更高版本'
这是在运行 Ventura 13.1 的 Mac M1 上,通过 HomeBrew 安装 PHP。 PHP 7.4.33 (cli)(构建时间:2023 年 9 月 1 日 02:37:00)( NTS ) 版权所有 (c) PHP 集团 Zend 引擎 v3.4.0,版权所有 (c) Zend
我有一个 Codecov 可以监听测试套件,举例来说,假设我们只有一个集成测试套件,配置将如下所示: codecov.yaml 覆盖范围: 地位: 项目...
Php 单元 getMockBuilder 与 Mockery
使用 PHPUnit\Framework\TestCase 类运行单元测试的 Laravel 项目。为了创建模拟,它有时使用内置的 PHPUnit Api。例如 $这个->模拟 = $这个->
PHPUnit 警告 - 未配置过滤器,代码覆盖率将不会被处理
我正在尝试使用 PHPUnit 生成覆盖 html 文件。我收到警告:“未配置过滤器,将不会处理代码覆盖率”并且不会生成覆盖率文件。 这是 phpunit.xml 文件 &...
Laravel - 编写一个测试用例来检查服务类触发的自定义异常是否通过渲染方法生成日志
在我的 Laravel 构建中,我有一个服务类: 使用 GuzzleHttp\Client; 使用 App\Services\ApiService\Exceptions\ServiceException 类 ApiService { __构造( 受保护的客户端$client ...
Laravel 测试assertSessionDoesntHaveErrors() 没有发现错误?
我想在 Laravel 测试中断言两件事: 对象已成功更改(例如,assertSee('New value')) 会话中没有错误(例如,assertSessionDoesntHaveErrors())
我的应用程序中有两个不同的用户对象,一个App\User 和一个App\Admin。对于两者,我有不同的警卫进行身份验证。 我的默认防护是模型 App\User 的网络防护并且...
PHPUnit 有虚拟测试数据库的方法,但是如何测试像curl 这样的HTTP 服务呢? 我的类方法获取 URL 并请求参数发送到服务器。它收到 json 格式的答案...