标签: phpunit

Phpunit 命令在 laravel 中显示错误

我遇到了无法运行测试用例的问题。我有一个 laravel 项目,我在其中编写了测试用例并尝试从我的 homestead 服务器运行。但它显示错误。

“供应商/bin/phpunit:第1行:../phpunit/phpunit/phpunit:没有这样的文件或目录”

我的供应商文件中有 phpunit 。

其他人也遇到过这样的问题,为什么会出现此错误?

等待回复..

phpunit laravel

2
推荐指数
1
解决办法
6159
查看次数

laravel phpunit 未知数据库':内存:

这个错误困扰着我。我的 laravel 版本是 5.6 我认为我没有对 phpunit.xml 文件进行任何更改,除了这些

<php>
        <env name="APP_ENV" value="testing"/>            
        <env name="CACHE_DRIVER" value="array"/>
        <env name="SESSION_DRIVER" value="array"/>
        <env name="QUEUE_DRIVER" value="sync"/>
        <env name="MAIL_DRIVER" value="array"/>
        <env name="DB_CONNECTION" value="sqlite"/>
        <env name="DB_DATABASE" value=":memory:"/>

    </php>
Run Code Online (Sandbox Code Playgroud)

我正在写这样的测试:

<?php

namespace Tests\Feature;

use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\DatabaseMigrations;

class DemoTest extends TestCase
{
    use DatabaseMigrations;

    public function test_it_is_nothing()
    {
        $this->get('/volunteers')->assertStatus('200');
    }
}
Run Code Online (Sandbox Code Playgroud)

我还参考了这篇文章Laravel 多个数据库 PHPUnit但没有帮助。

phpunit laravel laravel-5

2
推荐指数
1
解决办法
4339
查看次数

在 Laravel 单元测试期间保存变量

变量$this->id在另一个函数中不可见testExemple

\n\n

如果我将此变量传递给不在 \xe2\x80\x9ctest\xe2\x80\x9d 上启动的普通函数,而不是测试函数,则一切都会正常。

\n\n

我能以某种方式解决这个问题吗?

\n\n
class LoginTest extends TestCase\n{\n    protected $id;\n    public function testLogin()\n    {\n        $response = $this->json('post', 'auth/login', \n            ['email' => 'admin@mail.com', 'password' => '12345678'])\n            ->assertJsonStructure(['data' => ['id', 'name', 'email']]);\n\n        $response->assertStatus(201);\n\n        $userData = $response->getContent();\n        $userData = json_decode($userData, true);\n        $this->id = $userData['data']['id'];\n    }\n    public function testExemple()\n    {\n        echo($this->id);\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

php phpunit unit-testing laravel

2
推荐指数
1
解决办法
2231
查看次数

ArgumentCountError:函数 phpunit 的参数太少

我正在尝试使用创建一些编程测试phpUnit。我需要使用数据提供程序,但每次尝试时,它都会引发错误。我什至使用 文档中给出的示例phpUnit

 /**
 * @dataProvider additionWithNonNegativeNumbersProvider
 */
public function testAdd($a, $b, $expected)
{
    $this->assertSame($expected, $a + $b);
}

public function additionWithNonNegativeNumbersProvider()
{
    return [
        [0, 1, 1],
        [1, 0, 1],
        [1, 1, 3]
    ];
}
Run Code Online (Sandbox Code Playgroud)

我期望输出是:

There was 1 failure:
1) DataTest::testAdd with data set #3 (1, 1, 3)
Failed asserting that 2 is identical to 3.
Run Code Online (Sandbox Code Playgroud)

但它是:

ArgumentCountError : Too few arguments to function controllerTests::testAdd(), 0 passed in phar://C:/xampp/htdocs/2019-1-qa-grupo1/myss/Tests/phpunit-8.1.2.phar/phpunit/Framework/TestCase.php on line 1172 and exactly 3 …
Run Code Online (Sandbox Code Playgroud)

php phpunit

2
推荐指数
1
解决办法
6308
查看次数

如何在功能测试期间单击不是表单提交按钮的按钮

在功能测试期间,我需要单击按钮来发出 ajax 请求。
在浏览 symfony 测试文档时,我意识到您是否可以单击:

  • 一个链接
  • 表单的提交按钮

我的按钮有以下 id = "js-scroll-down"

当我尝试这个时:

  $btn = $crawler->filter('#js-scroll-down')->eq(0)->link();
  $crawler = $client->click($btn);
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:
LogicException:无法从“按钮”标签导航。

phpunit functional-testing symfony

2
推荐指数
1
解决办法
2561
查看次数

当我利用 laravel 的“RefreshDatabase”特征通过 phphunit 运行数据库迁移时,Laravel 指定一个迁移文件夹

我正在将我的应用程序从 Codeigniter 迁移到 Laravel,我们也正在进行迭代和单元测试。

该数据库由2个数据库组成:

  • old这是最初的 codeigniter 中使用的。
  • new这用于与 codeingiter 项目不相关的其他功能。

因此,我想制作一个用于old数据库的迁移脚本,但为了避免故障,我想为每个数据库的迁移脚本指定一个特定的文件夹。

因此我找到了这个工具: https: //github.com/Xethron/migrations-generator并通过此帮助输出:

Description:
  Generate a migration from an existing table structure.

Usage:
  migrate:generate [options] [--] [<tables>]

Arguments:
  tables                              A list of Tables you wish to Generate Migrations for separated by a comma: users,posts,comments

Options:
  -c, --connection[=CONNECTION]       The database connection to use. [default: "etable_api"]
  -t, --tables[=TABLES]               A list of Tables you wish to Generate Migrations for separated by a comma: users,posts,comments
  -i, --ignore[=IGNORE] …
Run Code Online (Sandbox Code Playgroud)

php phpunit codeigniter database-migration laravel

2
推荐指数
1
解决办法
1769
查看次数

自定义自动加载与 Composer 的自动加载冲突?

我有一个 PHP 项目,它加载一个名为 的引导文件custom_funcs.php,该文件位于 Web 根目录中。该文件包含一堆函数,定义了几个常量,并执行以下操作:

    require dirname( __DIR__ ) . '/lib/php/vendor/autoload.php';
    spl_autoload_register( function ($class_name) { include __DIR__ ."/classes/$class_name.php"; });
    set_include_path( get_include_path() . PATH_SEPARATOR . SITEROOT );
Run Code Online (Sandbox Code Playgroud)

第一行加载 Composer 自动加载器。(请注意,Composer 库位于 Web 根目录之外)。第二行告诉我的代码在哪里寻找无法识别的类,这样我就不必不断手动加载我曾经使用过的类文件。第三行将 Web 根目录添加到 PHP 的 PATH 中。

几年来,它与几个 Composer 包一起运行得很好。

然后...我安装了 PhpUnit。总的来说,我的工作正常,除了当我运行测试时:

  1. 如果没有错误,则可以正常工作。
  2. 如果出现错误,我还会收到 PHP 警告:
Warning: include(C:\...path_to_web_root.../classes/SebastianBergmann\Invoker\Invoker.php): failed to open stream: No such file or directory in C:\...path_to_web_root...\common_funcs.php on line 14
Warning: include(): Failed opening 'C:\...path_to_web_root.../classes/SebastianBergmann\Invoker\Invoker.php' for inclusion (include_path='xxxxxxx') in C:\...path_to_web_root...\common_funcs.php on line 14
Run Code Online (Sandbox Code Playgroud)

所以 …

php phpunit autoload spl-autoload-register composer-php

2
推荐指数
1
解决办法
2380
查看次数

仅运行 phpunit 代码覆盖率而不运行所有测试?

运行测试需要时间,有时我只是想知道覆盖范围。是否可以运行类似的东西,phpunit --coverage-text使其仅输出测试覆盖率而不实际运行所有测试?

php phpunit unit-testing

2
推荐指数
1
解决办法
1764
查看次数

使用 phpUnit 运行单个测试

我目前正在我的 Symfony 应用程序中引入测试。其中一些失败了,需要很长时间才能运行它们。

是否可以使用 simpl-phpunit 命令运行单个测试?

我已经测试过:

与我的测试的命名空间,但最终得到

./vendor/bin/simple-phpunit App\tests\Controller\DefaultControllerTest
Run Code Online (Sandbox Code Playgroud)

无法打开文件“ApptestsControllerDefaultControllerTest.php”。

并通过我的测试的相对路径,它会导致:

./vendor/bin/simple-phpunit tests/Controller/DefaultControllerTest
Run Code Online (Sandbox Code Playgroud)

无法打开文件“tests/Controller/DefaultControllerTest.php”。

php phpunit symfony simple-phpunit

2
推荐指数
1
解决办法
3359
查看次数

Laravel 6.x 命令测试中缺少 TestCase::artisan()

我按照文档创建了一个非常基本的控制台命令测试:

<?php

namespace Tests\Feature;

use PHPUnit\Framework\TestCase;

class QueueJobCommandTest extends TestCase
{


    /**
     * Test a job argument is requied
     *
     * @return void
     */
    public function testNoArgumentsIsError()
    {
        $this->artisan('queue:job')
            ->expectsOutput('No job specified')
            ->assertExitCode(0);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我运行 phpunit 时出现错误:

Error: Call to undefined method Tests\Feature\QueueJobCommandTest::artisan()

任何关于为什么TestCase::artisan()未定义的帮助将不胜感激。

php phpunit laravel

2
推荐指数
1
解决办法
1098
查看次数