当前位置: 首页 > 知识库问答 >
问题:

ReflectionException:Class mailer不存在

宦琪
2023-03-14

如果我在测试类中使用邮件,Laravel 5.7告诉我类邮件不存在。

这是我的测试函数:

/**
     * A basic test example.
     *
     * @return void
     */
    public function testBasicTest()
    {
      \Mail::raw('Hello world', function($message){
        $message->to('foo@bar.com');
        $message->from('bar@foo.com');
      });

    }

当我在终端中输入phpunit时会发生这种情况:

1) 测试\功能\示例测试::testBasicTest ReflectionException:Class mailer不存在

/home/www/testmachine/vendor/laravel/framework/src/Illuminate/Container/Container.php:779 /home/www/testmachine/vendor/laravel/framework/src/Illuminate/Container/Container.php:658 /home/www/testmachine/vendor/laravel/framework/src/Illuminate/Container/Container.php:609 /home/www/testmachine/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:735 /home/www/testmachine/vendor/laravel/framework/src/Illuminate/Container/Container.php:1222 /home/www/testmachine/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:175 /home/www/testmachine/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:144 /home/www/testmachine/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:231acade.php:231 /home/www/testmachine/tests/Feature/ExampleTest.php:14

然而,当我在应用程序的其他地方使用邮件时,它是有效的,例如在Route.php中:

Route::get('/test', function(){
  \Mail::raw('Hello world', function($message){
    $message->to('foo@bar.com');
    $message->from('bar@foo.com');
  });
  dd('hi');
});

我检查了应用程序中是否有“Illumbite\Mail\MailServiceProvider::class”。我还按照这里的建议执行了一个composer更新,然后按照这里的建议执行了composer dump自动加载。

知道为什么会抛出这个错误吗?

共有3个答案

微生鸿轩
2023-03-14

在编写器转储自动加载时,我也出现了这个错误。事实证明,我的代码中有一个简单的语法错误,我还设置了一个异常处理程序,可以在网站上出现错误时随时向我发送电子邮件。

我认为发生的是,在composer转储自动加载期间,当遇到语法错误时,composer没有构建其自动加载文件,因此当这触发发送给我的电子邮件时,即使使用正确的use语句,邮件外观调用也失败。

这可能不是导致此错误的普遍原因,但希望这对某些人有用。

濮阳鸿祯
2023-03-14

要嘲笑邮件,只需查看此文档:

https://laravel.com/docs/5.7/mocking#mail-假的

但对于发送实际邮件,可以使用laracasts编写的MailTrap测试类

https://github.com/laracasts/Behat-Laravel-Extension#service-mailtrap

裴嘉良
2023-03-14

在测试类中,我认为您需要在顶部使用use语句指定Mail类:

use Illuminate\Support\Facades\Mail;

但是检查邮件伪造能力(Mail::fake()),然后再进行测试。

https://laravel.com/docs/5.7/mocking#mail-假的

 类似资料:
  • 问题内容: 这些查询中哪个更快? 不存在: 或不在: 查询执行计划说他们都做同样的事情。如果是这样,建议使用哪种形式? 这基于NorthWind数据库。 问题答案: 我始终默认为NOT EXISTS。 目前执行计划可能是相同的,但是如果将来更改任一列以允许NULLs,则该NOT IN版本将需要做更多的工作(即使NULL数据中实际上没有s),并且NOT INifNULL的语义也存在。无论如何都不太可

  • 问题内容: 想知道是否有人可以通过此查询为我提供一些帮助: 我只想得到计数(已重命名)等于1的结果。此查询出现错误: 但是该列 应该 存在,对吗?有人可以协助吗?谢谢! 问题答案: 您不能在WHERE子句中引用列别名。 在传统SQL中,最早可以引用列别名的是子句。但是MySQL和SQL Server允许在and子句中进行访问。

  • 问题内容: 我认为我要沿着这条路走正确的路…请忍受,因为我的SQL并不是最出色的 我试图查询数据库以从一个表中选择所有单元格中某些单元格不存在的所有内容。那没有多大意义,但我希望这段代码会 因此,基本上我有一张桌子,上面列出了员工及其详细信息。然后是另一个表,其中包含一些其他详细信息,包括其名称。在eotm_dyn表中没有名称的地方,这意味着它们没有条目,我想确切地知道它们是谁,或者换句话说,确切

  • 我正在研究如何从命令行编译Java。我得到的是: 我得到的是: HelloWorld: inner.java 内部2.Java 我正在用编译这个文件,这个文件工作得很好。 现在我的理解是,因为helloworld.java在它的import语句中引用了其他包,所以javac会去编译这些包。我猜对于所有的Java包,javac在内部都有。 反正-如果我在helloworld.java中添加以下导入行

  • 我得到了一个可怕的软件包,它根本不存在,简直要了我的命。代码很好,我在市场上有运行代码的应用程序。 现在它正在影响简单的应用程序。o.0 <代码>R.string。app_name是错误的my 。应该对应于R.java

  • 我们正在尝试将我们的微服务迁移到Spring Boot 2,目前我们正在使用Spring Boot 1.5.6。释放 在迁移过程中,我们发现我们的微服务部分损坏,在日志文件中我们发现了以下错误: com.mysql.jdbc.exceptions.jdbc:表'acme_ms.hibernate_sequence'不存在 目前我们的应用程序中只存在一个域类: 我们发现问题与策略类型有关,我们试图将