메일을 보낼 때 Laavel을 사용한 속성 할당
배경.
mocking#mail-fake에서 보듯이 목적지는 분배될 수 있지만 다른 속성, 예를 들어 테마, 템플릿 등도 분배되어야 한다.
誰が、誰に、何の件名で、どのテンプレートを使って
메일 보냈어요?컨디션
Laravel: 8.24
컨텐트
일반 메일에 포함된 속성을 대상으로 합니다.객체 등록 정보는 다음과 같습니다.
mail.php
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->from('[email protected]')
->markdown('emails.orders.shipped', [
'url' => $this->orderUrl,
])
->subject('example subject');
}
부분적으로 발췌한 테스트 코드는 다음과 같다.mailTest.php
<?php
namespace Tests;
use App\Mail\OrderShipped;
use Illuminate\Mail\Markdown;
use Illuminate\Support\Facades\Mail;
use Tests\TestCase;
use ReflectionClass;
class ExampleTest extends TestCase
{
public function test_orders_can_be_shipped()
{
Mail::fake();
// Perform sending email
// Assert that a mailable with attributes sent
Mail::assertSent($mailable, function ($mail) use ($data) {
$mail->build();
$reflectionClass = new ReflectionClass($mail);
$reflectionProperty = $reflectionClass->getProperty('markdown');
$reflectionProperty->setAccessible(true);
$view = $reflectionProperty->getValue($mail);
$markdown = $this->app->make(Markdown::class);
$body = $markdown->renderText($view, $mail->buildViewData());
$this->assertSame($mail->viewData, $data['viewData']);
return $mail->hasFrom($data['from'])
$mail->hasTo($data['to']) &&
$mail->subject == $data['subject'] &&
$view == $data['view'] &&
($body) &&
strpos($body, $data['needle']);
}
}
Reflection
참조입니다.markdown
속성에 지정된 템플릿의 유효성은 needle
의 문자열 검색을 통해 보장됩니다.(메시지의 레이아웃과 내용이 완전히 일치하여 테스트 관점에 포함되지 않음)viewData
는 연상 배열 형식으로 용례 항목의 명칭에 따라 변할 수 있기 때문에 사용assertSame
.주의점
From
속성이 전역 설정인 경우 실행build()
시 바인딩되지 않으므로 결단을 내릴 수 없습니다.참고 자료
Reference
이 문제에 관하여(메일을 보낼 때 Laavel을 사용한 속성 할당), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/ntoy/articles/6f3d15329013f4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)