phpunit 相关问题

PHPUnit是面向程序员的PHP测试框架。它是单元测试框架的xUnit体系结构的一个实例。

如何测试 Symfony 独立包

我开发了一些捆绑包,即 https://github.com/975L/EmailBundle,我想为它们添加测试。因此,我创建了包含一个测试的文件 Tests/Service/EmailServiceTest.php。 我...

回答 2 投票 0

在 Laravel 中对控制器进行单元测试而不测试路由的最佳方法是什么

我读过很多关于使用 $this->call($destination, $parameters, 'GET'); 测试控制器的文档。但这似乎也依赖于正在设置的路线,并且知道正确的$destin...

回答 4 投票 0

Eclipse 和 PHPUnit:“无法解析导入 PHPUnit\Framework\TestCase”

我从 PHPUnit 开始,到目前为止运行良好。我刚刚遇到一个问题: Eclipse (Oxygen.3) 在这行告诉我: 使用 PHPUnit\Framework\TestCase; “导入 PHPUnit\Framework\TestCase ...

回答 2 投票 0

如何在 Laravel 中将令牌传递给受保护的路由(类中的方法)

我正在 Laravel 中编写 phpunit 测试。 我使用以下代码成功登录到应用程序: $response = $this->json('POST', '登录', [ 'user_name' => $用户名...

回答 1 投票 0

cakephp3.7 测试中 CSRF 令牌不匹配

测试/TestCase/Controller/FeedbackControllerTest.php:45 公共函数 testAdd() { $this->enableCsrfToken(); $this->enableSecurityToken(); $这个->会话([ '验证'=&g...

回答 2 投票 0

phpunit:重用数据提供者

我想针对整组文件的内容运行多个测试用例。我可以使用数据提供程序来加载我的文件,并使用相同的提供程序进行所有测试,如下所示: 类 mytest 扩展...

回答 1 投票 0

PHPUnit:以旧方式使用测试套件,无需框架和其他东西

我在我的项目中使用 PHPUnit 已经好几年了,而且我没有使用 Composer、XML、框架或类似工具。 我的开发过程涉及在辅助 Konsole 上运行的脚本...

回答 1 投票 0

如何在单元测试中模拟 s3 的存储故障?

我有一个将文件上传到 s3 的服务: 我的服务类 { 公共函数 uploadFile(SomeModel $m, UplaodFile $f) { $filename = md5(uniqid()).$file->getClientOriginalName(); $s...

回答 1 投票 0

如何使用 phpunit 正确创建类依赖的模拟?

我有一个服务类,其中直接创建了 TypeSaveLogRecord 对象。 类 TypeSaveLogService { 公共函数存储(字符串$type,字符串$smId):TypeSaveLogRecord { $lo...

回答 1 投票 0

对 Laravel 包进行单元测试时未找到配置类

我正在开发 Laravel (5.4) 包,并且正在尝试进行单元测试。我有这门课: 我正在开发 Laravel (5.4) 包,并且正在尝试进行单元测试。我有这门课: <?php namespace Sample; class Foo { public function getConfig() { $config = \Config::get('test'); return $config; } } 我有这个测试: <?php use PHPUnit\Framework\TestCase; use Sample\Foo; class FooTest extends TestCase { public function testGetConfig() { $foo = new Foo; $config = $foo->getConfig(); } } 当我执行 phpunit 时出现此错误: 错误:未找到“配置”类 我如何对这个课程进行单元测试? 谢谢你。 您应该扩展 PHPUnit\Framework\TestCase,而不是扩展 Tests\TestCase: <?php namespace Tests\Unit; // use PHPUnit\Framework\TestCase; use Tests\TestCase; use Sample\Foo; class FooTest extends TestCase { public function testGetConfig() { $foo = new Foo; $config = $foo->getConfig(); } } 此外,Config或其他 Laravel 外观可能无法在 @dataProvider 方法中工作,请参阅 Laravel 框架类在 PHPUnit 数据提供程序中不可用了解更多信息。 模拟代码中的依赖关系是一个很好的做法。在这种情况下,您依赖于外部类(Config)。通常我这样测试: // make sure the mock config facade receives the request and returns something Config::shouldReceive('get')->with('test')->once()->andReturn('bla'); // check if the value is returned by your getConfig(). $this->assertEquals('bla', $config); 显然,您需要在测试中导入 Config Facade。 但是:我会在实际代码的构造函数中注入 Config 类,而不是使用外观。但这就是我...:-) 类似这样的事情 class Foo { /** container for injection */ private $config; public function __construct(Config config) { $this->config = $config; } public function getConfig() { $config = $this->config->get('test'); return $config; } } 然后通过将模拟配置注入构造函数来测试它。 尝试像这样包含 use Illuminate\Support\Facades\Config; 我遇到了同样的问题,是的,答案有效,现在问题是,如果我开发一个包并使用pest来测试它怎么办? 我通过添加此条目解决了问题 uses( Tests\TestCase::class, )->in('Unit', 'Feature', '../packages/vendor/package-name/tests/Unit'); 到 测试/Pest.php 希望这会对某人有所帮助。

回答 4 投票 0

phpunit 中的一次性安装和一次性拆卸

我正在 phpunit 中创建测试,我需要在数据库中设置虚拟数据。这些虚拟数据将在所有单元测试类中使用,因此我只需要设置一次。目前,我

回答 1 投票 0

PHPUnit:预期状态代码 200,但使用 Laravel 收到 419

我想测试删除方法,但我没有从 PHPUnit 获得预期的结果。运行测试时我收到此消息: 预期状态代码 200,但收到 419。断言失败 ...

回答 6 投票 0

PHPUnit backupGlobals 选项:它的用途是什么?

我不明白PhpUnit中backupGlobals选项的定义和用法。 PhpUnint 9.6 文档指出: XML 配置文件的文档: “PHPUnit 可以选择...

回答 1 投票 0

如何使用 pcov 获得代码覆盖率报告?

我使用 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 设置。

回答 1 投票 0

PHPUnit 学说模拟问题

对于我的项目来说,理想的情况是我只需要在数据库中存储时间(学说 type="time_immutable")。然而它会导致 phpunit 出现问题,我找不到任何有效的解决方案。 当我尝试...

回答 1 投票 0

测试中模拟laravel环境

我正在实现一些逻辑,要求代码在生产环境中表现不同。 我想编写一个测试来断言这确实发生了,但我很难嘲笑

回答 5 投票 0

在 phpunit 测试中设置/使用会话

我有一个简单的类,它包装了序列化/反序列化对象数组并将它们添加到会话中,我想测试它。 我得到的错误是 没有会话可用...

回答 1 投票 0

为什么我的函数中的模拟查询返回空数组而不是模拟的数组?

我在单元测试中模拟数据库查询: 命名空间测试\功能\模型; 使用App\Models\Access; 使用应用\模型\用户; 使用 Illuminate\Database\Eloquent\Collection; 使用测试\测试用例; 使用模拟...

回答 1 投票 0

Laravel 5.4;如何从 Laravel 包运行单元测试?

我正在尝试开发一个 Laravel Composer 包并在其中运行单元测试。在花了过去几天阅读各种过时且相互矛盾的指南和博客文章后,我

回答 4 投票 0

使用 SQLite 内存 DB 进行 Symfony / Doctrine 单元测试

我仍在进行 PHP 单元测试,以测试我的 symfony2 控制器。我的测试类是 WebTestCase 的派生,测试正在执行 GET 或 POST 请求来检查一切是否正常...

回答 3 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.