質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ユニットテスト

ユニットテストは、システムのテスト手法の一つで、個々のモジュールを対象としたテストの事を指します。対象のモジュールが要求や性能を満たしているか確認する為に実行します。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Q&A

解決済

1回答

3164閲覧

Laravelでメール送信テストが通らない

cacao86

総合スコア97

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ユニットテスト

ユニットテストは、システムのテスト手法の一つで、個々のモジュールを対象としたテストの事を指します。対象のモジュールが要求や性能を満たしているか確認する為に実行します。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

0グッド

0クリップ

投稿2020/08/27 12:37

編集2020/09/08 01:10

Laravelで作成したフォーム画面から名前とメールアドレスの入力が完了したら、完了メールを送信するようにしています。
ブラウザで入力した際はmailtrapで確認できたのですが、テストコードをを実行すると下記のようなエラーが出てしまい解決策が分からないのでこちらに投稿させていただきます。
mailableがうまく使えていないのかなと思うのと、DB周りでも何か問題があるのかもしれませんが原因が特定できません。

There was 1 failure: 1) Tests\Feature\FormTest::testComplete The expected [App\Mail\CustomerSent] mailable was sent 0 times instead of 1 times. Failed asserting that 0 is identical to 1. /var/www/vendor/laravel/framework/src/Illuminate/Support/Testing/Fakes/MailFake.php:81 /var/www/vendor/laravel/framework/src/Illuminate/Support/Testing/Fakes/MailFake.php:53 /var/www/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:261 /var/www/tests/Feature/FormTest.php:68 FAILURES! Tests: 6, Assertions: 7, Failures: 1.

テストコードも色々と試しましたがどれもうまくいきませんでした。汚くてすみません。

public function testComplete() { // $response = $this->get('/app') // ->type('test_user', 'name') // ->type('test@sample.com', 'email') // ->press('登録する') // ->assertRedirect('/app/confirm'); Mail::fake(); $email = 'test@sample.com'; $data = [ 'name' => 'test_user', 'email' => $email ]; Mail::assertSent(FormSent::class, 1); // Mail::assertSent(Approved::class, function ($mail) { // return $mail->hasTo('test@sample.com'); // }); // Mail::assertSent(FormSent::class); Mail::assertSent(FormSent::class, function ($mail) use ($email) { // $mail->build(); return $mail->to[0]['addres'] === $email; } ); Mail::assertNotSent(Denied::class); // Mail::assertSent(CustomerSent::class, function ($mail) { // $mail->build(); // return $mail->hasTo('test@sample.com'); // }); }

.envと.env.testingのメール部分は同一です

MAIL_MAILER=smtp MAIL_HOST=smtp.mailtrap.io MAIL_PORT=2525 MAIL_USERNAME=hoge MAIL_PASSWORD=huga MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS=sample@sample.com MAIL_FROM_NAME="${APP_NAME}"

phpunitは下記です。

php

1<php> 2 <env name="APP_ENV" value="testing"/> 3 <server name="BCRYPT_ROUNDS" value="4"/> 4 <server name="CACHE_DRIVER" value="array"/> 5 <env name="DB_CONNECTION" value="mysql" force="true"/> 6 <!-- <server name="DB_DATABASE" value=":memory:"/> --> 7 <server name="MAIL_MAILER" value="array"/> 8 <server name="QUEUE_CONNECTION" value="array"/> 9 <server name="SESSION_DRIVER" value="array"/> 10 <server name="TELESCOPE_ENABLED" value="false"/> 11 <!-- <server name="DB_DATABASE" value="test-db" force="true"/> --> 12 </php>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hentaiman

2020/08/27 14:09

.envのメール周りの設定も晒せる範囲で晒した方がいいですね 実際に運用しようとしているsmtpサーバーがmailtrapと似た設定のままで使えるかどうかも確認しましょう
guest

回答1

0

自己解決

Mailableクラスとコントローラーでの送信処理を少し修正したらできました。

投稿2020/09/08 01:12

cacao86

総合スコア97

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問