gpt4 book ai didi

laravel - 使用 PHPUnit 通过 Github 操作在主机应用程序中测试 Laravel 包?

转载 作者:行者123 更新时间:2023-12-02 04:20:46 26 4
gpt4 key购买 nike

概括

我有一个需要由真正的 laravel 应用程序包装才能正确测试的包。不幸的是我不能使用管弦乐队测试平台。但是我为此设置了一个 Github 操作。但是,当运行最后一步时 vendor/phpunit/phpunit/phpunit path/to/package我遇到以下问题:

  • PHPUnit 无法解析某些类
  • 它认为 PHPUnit setUp()尽管 protected ,但在我的父类中是公开的。
  • 我怀疑推送后缓存或延迟有问题(但我已经测试过删除所有缓存,
    自动加载和配置)

  • 示例错误
    Run vendor/phpunit/phpunit/phpunit packages/Ajthinking/PHPFileManipulator/tests
    PHP Fatal error: Uncaught Error: Class 'PHPFileManipulator\Tests\FileTestCase' not found in /home/runner/work/php-file-manipulator/php-file-manipulator/host/packages/Ajthinking/PHPFileManipulator/tests/Unit/APIDelegationTest.php:10
    Stack trace:
    #0 /home/runner/work/php-file-manipulator/php-file-manipulator/host/vendor/phpunit/phpunit/src/Util/FileLoader.php(59): include_once()
    #1 /home/runner/work/php-file-manipulator/php-file-manipulator/host/vendor/phpunit/phpunit/src/Util/FileLoader.php(47):

    查看我的主分支,请求的文件 FileTestCase在那儿。

    完整的 ActionScript :
    name: Laravel-wrapped-package-test

    on: [push]

    jobs:
    laravel-tests:
    runs-on: ubuntu-latest
    steps:
    - name: Install host app
    run: composer create-project --prefer-dist laravel/laravel host

    - name: Install package (this repo)
    uses: actions/checkout@v2
    with:
    path: host/packages/Ajthinking/PHPFileManipulator

    - name: Add this package to composer.json repositories
    uses: ajthinking/merge-json-files@v1.0.20
    with:
    repo_relative_path: 'host/packages/Ajthinking/PHPFileManipulator'

    - name: Require this package
    working-directory: ./host
    run: composer require ajthinking/php-file-manipulator @dev

    - name: Publish things
    working-directory: ./host
    run: php artisan vendor:publish --provider="PHPFileManipulator\ServiceProvider"

    - name: Run tests
    working-directory: ./host
    run: vendor/phpunit/phpunit/phpunit packages/Ajthinking/PHPFileManipulator/tests

    测试用例

    下面是我的基本测试用例。但从未调用 setUp 方法。 (以前它被称为 TestCase 作为默认的 Laravel 提供 - 它在调试时被重命名)
    <?php

    namespace PHPFileManipulator\Tests;

    use Illuminate\Foundation\Testing\TestCase as BaseTestCase;

    abstract class FileTestCase extends BaseTestCase
    {
    protected function setUp() : void
    {
    parent::setUp();
    dd("it will never reach this dd call on github actions!");
    }
    }

    用法:
    <?php

    namespace PHPFileManipulator\Tests\Unit;

    use PHPFileManipulator\Tests\FileTestCase;

    class StupidTest extends FileTestCase
    {
    /** @test */
    public function it_can_run_tests()
    {
    $this->assertTrue(true);
    }
    }

    版本

    我使用 PHP 7.4.2 和 PHPUnit 8.5.2(与 ubuntu-latest github Action 相同)在我自己的机器上模仿 ActionScript 工作正常。
    我在 github/local 上查看了 CASE 没有发现任何差异。

    任何想法,我缺少什么?

    最佳答案

    我无法更新主机应用程序 composer.json存储库部分。这意味着需要带有 @dev 的包标志(采用最新提交)无效
    - 相反,从 packagagist 中提取了过时的软件包版本。

    固定 github 工作流程:

    name: tests

    on: [push, pull_request]

    jobs:
    laravel-tests:
    runs-on: ubuntu-latest
    steps:
    - name: Install host app
    run: composer create-project --prefer-dist laravel/laravel host

    - name: Checkout the package
    uses: actions/checkout@v2
    with:
    path: host/packages/Ajthinking/PHPFileManipulator

    - name: Add composer.json repository
    working-directory: ./host
    run: composer config repositories.php-file-manipulator path "/home/runner/work/php-file-manipulator/php-file-manipulator/host/packages/Ajthinking/PHPFileManipulator"

    - name: Require the package
    working-directory: ./host
    run: composer require ajthinking/php-file-manipulator @dev

    - name: Publish things
    working-directory: ./host
    run: php artisan vendor:publish --provider="PHPFileManipulator\ServiceProvider"

    - name: Run tests
    working-directory: ./host
    run: vendor/phpunit/phpunit/phpunit packages/Ajthinking/PHPFileManipulator/tests

    关于laravel - 使用 PHPUnit 通过 Github 操作在主机应用程序中测试 Laravel 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59974515/

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