Câu hỏi phỏng vấn Laravel
Câu hỏi

How do you mock a static facade methods?

Câu trả lời

To mock a static facade method in Laravel, you can use the shouldReceive method provided by the Facade class. This method allows you to create a mock instance of the facade, which can be used to define expectations for the method calls. Here is a step-by-step guide on how to do it:

  1. Import the necessary classes: Ensure you have the necessary classes imported in your test file. Typically, you will need the facade you want to mock and the TestCase class.

  2. Use the shouldReceive method: This method is used to set up expectations for the facade method calls. You can specify how many times the method should be called, with what arguments, and what it should return.

  3. Run your test: Execute your test to ensure that the facade method behaves as expected.

Here is an example of how to mock the Cache facade's get method:

php Copy
<?php

namespace Tests\Feature;

use Illuminate\Support\Facades\Cache;
use Tests\TestCase;

class UserControllerTest extends TestCase
{
    public function testGetIndex()
    {
        // Mock the Cache facade
        Cache::shouldReceive('get')
            ->once() // Expect the method to be called once
            ->with('key') // Expect the method to be called with 'key' as the argument
            ->andReturn('value'); // Return 'value' when the method is called

        // Perform the action that triggers the facade call
        $response = $this->get('/users');

        // Add your assertions here
        // ...
    }
}

In this example:

  • Cache::shouldReceive('get') sets up the mock for the get method of the Cache facade.
  • ->once() specifies that the method should be called exactly once.
  • ->with('key') specifies that the method should be called with the argument 'key'.
  • ->andReturn('value') specifies that the method should return `'...
middle

middle

Gợi ý câu hỏi phỏng vấn

middle

What do you know about query builder in Laravel?

middle

What is Laravel Passport?

middle

How do you do soft deletes?

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào