2017-02-01 32 views
2

私はLaravel 5.4を実行してMail :: fake()とMail :: assertSent()でメールをテストしています。 hasTo($ email)やhasCc($ email)などのアサーションがありますが、メッセージの内容にアクセスする方法はないようです。電子メール本文に特定の文字列が含まれているかどうかテストしたいと思います。Laravel 5.4 Mailでのテスト:: fake - メッセージ本文へのアクセス方法?

擬似コード:

Mail::assertSent(UserInvited::class, function($mail) use($token) { 
    return $mail->bodyContains($token); # that method does not really exist 
}); 

これは可能ですか?

+0

解決策はありますか? – poldixd

答えて

0

メールをテストするためのパッケージがあります。しかし、今のところ、Laravel 5.4。*をreqsに指定していないため、作業を開始するのに少し創造的でなければなりません。だから、あなたのcomposer.jsonファイルに移動して、Laravel 5.4の更新された要件をこのレポから独自のパッケージをビルド*このように:。

"repositories": [ 
    { 
     "type": "package", 
     "package": { 
      "name": "spinen/laravel-mail-assertions", 
      "version": "0.1.2", 
      "require": { 
       "php": ">=5.5.0", 
       "illuminate/support": "~5.1.10|5.2.*|5.3.*|5.4.*", 
       "swiftmailer/swiftmailer": "~5.1" 
      }, 
      "require-dev": { 
       "mockery/mockery": "^0.9.1", 
       "phpunit/phpunit": "~4.0|~5.0", 
       "psy/psysh": "^0.5.1", 
       "satooshi/php-coveralls": "^0.6.1", 
       "symfony/var-dumper": "~2.7|~3.0" 
      }, 
      "autoload": { 
       "psr-4": { 
        "Spinen\\MailAssertions\\": "src" 
       } 
      }, 
      "autoload-dev": { 
       "psr-4": { 
        "Spinen\\MailAssertions\\": "tests" 
       } 
      }, 
      "config": { 
       "preferred-install": "dist" 
      }, 
      "dist": { 
       "url": "https://github.com/spinen/laravel-mail-assertions/archive/0.1.1.zip", 
       "type": "zip" 
      } 
     } 
    } 
], 

その後、require-devの下で、カスタムパッケージを追加します。

"require-dev": { 
    "spinen/laravel-mail-assertions": "^0.1.2" 
}, 

これをインストールしたら、.envファイルにMAIL_DRIVER=logと設定して、Spinen\MailAssertions\MailTrackingの特性をテストに引き出します。この特性には、seeEmailContains,seeEmailSubjectContainsなどのメソッドがあり、送信された電子メールにテキストが存在することを主張します。

関連する問題