Почему поставщик услуг не будет издеваться? - PullRequest
1 голос
/ 18 апреля 2019

Я использую библиотеку для отправки запросов на отправку действительно заданий https://github.com/jobapis/jobs-indeed.

Я настроил провайдера, чтобы я мог легко высмеивать запросы, а также чтобы мне не приходилось каждый раз настраивать свои учетные данныераз я использую его.

Эта библиотека имеет 2 класса.Класс запросов и провайдеров.Класс Provider отвечает за выполнение http-запроса.

Я могу издеваться над классом Query, но не могу насмехаться над классом Provider.

Provider:

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use JobApis\Jobs\Client\Queries\IndeedQuery;
use JobApis\Jobs\Client\Providers\IndeedProvider;

class JobSearchServiceProvider extends ServiceProvider
{
    /**
     * Register services.
     *
     * @return void
     */
    public function register()
    {
        // Register Indeeds API
        $this->app->bind(IndeedQuery::class, function() {
            // Build the required fields for indeeds api
            $indeed = new IndeedQuery([
                'publisher' => config('services.indeed.publisher'),
                'format' => 'json',
                'v' => '2',
            ]);

            return $indeed;
        });

        $this->app->bind(IndeedProvider::class, function() {
            // Use an empty query object so that we can initialise the provider and add the query in the controller.
            $queryInstance = app('JobApis\Jobs\Client\Queries\IndeedQuery');

            return new IndeedProvider($queryInstance);
        });
    }
}

Контроллер:

public function searchIndeed(Request $request, IndeedQuery $query, IndeedProvider $client)
{
    dump($query);  // Returns a mockery object
    dd($client);   // Returns original object
}

Тест:

public function testSearchIndeed()
{
    $user = factory(User::class)->create();

    $this->mock(IndeedQuery::class);
    $this->mock(IndeedProvider::class);

    $this->actingAs($user)
        ->get('indeed')
        ->assertStatus(200);
}

Почему насмехается над AlwaysQuery, а не по действительно провайдеру?

1 Ответ

0 голосов
/ 18 апреля 2019

Обнаружена проблема.

Насмешка не выдает ошибок, если вы попытаетесь высмеять класс, который не существует.У меня была ошибка правописания в моих тестах, когда требовался класс.

Контроллер

use JobApis\Jobs\Client\Providers\IndeedProvider;

Тест

use JobApis\Jobs\Client\Provider\IndeedProvider; // Notice missing 's'

При использовании насмешек вы не получите ошибок, есликласс не существуетПоэтому, если объект насмешки не разрешен, проверьте орфографию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...