Laravel 测试 - 该名称已被使用

Posted

技术标签:

【中文标题】Laravel 测试 - 该名称已被使用【英文标题】:Laravel Testing - the name is already in use 【发布时间】:2021-02-08 10:57:46 【问题描述】:

我在使用 phpunit 时遇到问题,我不知道为什么我在文件正常的情况下会出现这种错误, 我的理论是,当测试运行时,它会重新包含名称文件,而不是检查文件是否已经被导入,那么它不应该重新发布。

我尝试在 CreateApplications 上执行 require_once 但它会导致错误,

由于错误,我无法在一个类上测试所有测试用例

Cannot declare class <class omitted>, because the name is already in use in <file omitted>

<?php

namespace Tests;

use Illuminate\Contracts\Console\Kernel;

trait CreatesApplication

    /**
     * Creates the application.
     *
     * @return \Illuminate\Foundation\Application
     */
    public function createApplication()
    
        $app = require_once(__DIR__.'/../bootstrap/app.php');

        $app->make(Kernel::class)->bootstrap();

        return $app;
    

我的问题是,如何修复此错误或如何不重新导入课程?如何预防?

到目前为止,我在 PHPUnit 上使用 --filter 选项来调用测试类上的特定方法

【问题讨论】:

【参考方案1】:

更新

有一个自定义包,它使用include,这会导致错误, 就我而言,它位于自定义包服务提供者的引导方法中

<?php

namespace CustomPackage;

use Illuminate\Support\ServiceProvider;

class CustomPackageProvider extends ServiceProvider
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
        ...
        include(__DIR__.'/Nem/NemPhp.php');
    

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()

    


所以将include 更改为require_once 解决问题 报告中的错误不太清楚,这就是为什么我很难质疑理论是如何发生的,因为一个错误:)

【讨论】:

以上是关于Laravel 测试 - 该名称已被使用的主要内容,如果未能解决你的问题,请参考以下文章

Larave中CSRF攻击

larave学习笔记1-安装配置

我想自学laraver,请诸位前辈给一些建议,谢谢

自动化测试:六个值得参考的 Laravel 开源项目

Larave使用composer安装无反应,提示“Changed current directory to C:/Users/Administrator/AppData/Roaming/Compose

Larave使用composer安装无反应,提示“Changed current directory to C:/Users/Administrator/AppData/Roaming/Compose