Posts

Showing posts from June, 2023

Laravel chuyển đổi ngôn ngữ trong email khi chạy lệnh command

- Nhiều thắc mắc đưa ra là mình có Middleware Locale rồi đã đặt trong Kernel rồi. - Trong API cũng set middleware('locale') rồi mà sau khi chạy command gởi mail ra nó không nhận file ngôn ngữ. Hiểu đơn giản là khi chạy 1 command nó không gọi bất cứ 1 API nào cả thì đâu có đi qua middleware đâu mà nhận locale. Để thực hiện translate nội dung mail khi chạy command thì từ Laravel 5.4 đã hổ trợ cài locale 1. Mail::to('abc@test.com') ->locale('nl') ->send(new InviteUserMail()); 2. Trong file .blade.php bạn phải đổi thành Thay vì: Dear Administrator thì phải đổi thành {{__('Dear Adminitrator')}} << với cặp {{}} và __() thì việc chuyển đổi ngôn ngữ trong blade template mới được thực hiện. Một lưu ý: file chuyển ngôn ngữ phải là file .json và đặt ở lang/nl.json chỉ với ->locale('language') thì chắc chắn nội dung mail của bạn sẽ được dịch

Laravel Unit Test - Test Job

Bài này thì cơ bản về cách test 1 job được đưa vào hàng đợi hay chưa? và test mock service của một bên thứ 3 như thế nào 1. Import những thư viện cần thiết: use Bus; use Illuminate\Testing\Fluent\AssertableJson; use Mockery; use Mockery\MockInterface; Trong đó thì:  - Bus dùng để gửi một lệnh đến trình xử lý thích hợp của nó. - AssertableJson dùng để kiểm tra kết quả trả về - Mockery dùng để mock các dịch vụ của bên thứ 3 - MockInterface dùng để định nghĩa định dạng 2. Gọi function test public function test_user_can_check_device_but_dont_know_serial() {     // Giả lập môi trường sẽ gởi lệnh     Bus::fake();     // Gọi đến dịch vụ của bên thứ 3     $this->instance(         MSService::class,             Mockery::mock(MSService::class, function (MockInterface $mock) {                 $mock->shouldReceive('requestToTenant') // function nào được gọi                       ->withAnyArgs() // Chấp nhận mọi tham số                       ->once() // Ngụ ý gọi 1 l

Laravel Unit Test - Test Mail

Đầu tiên về nội dung Seri này là giới thiệu cơ bản về các loại test trong Laravel Bài này mình sẽ làm về test mail Các bước cơ bản như sau: 1. Thêm thư viện cần dùng: use Illuminate\Support\Facades\Mail; 2. Làm theo hướng dẫn: ``` public function testEmail() {      Mail::fake();      // Your post call here(API or JOB or COMMAND)     // Example call a command here       $this->artisan('command:commandname', [                'argurment' => 'test@testcommand.com',                '--option' => 'test.com'           ]);      Mail::assertSent(CommentPosted::class); // This is a mailable class           / / You can also check if the correct email was send      // by checking the data that was send to it      Mail::assertSent(CommentPosted::class, function ($mail) use ($user) {      return $mail->hasTo($user->email) &&                     $mail->hasCc('...') &&                     $mail->hasBc