Контейнер для МОК-теста для тестирования упаковки Laravel - PullRequest
0 голосов
/ 20 октября 2018

Я работаю над пакетом, который взаимодействует с текущим запросом для получения информации.Чтобы получить эту информацию, я использую $request = Container::getInstance()->make('request');.

. Она отлично работает, когда я использую ее в приложении Laravel.Тем не менее, я пытаюсь получить полное покрытие кода в моих тестах.Я считаю, что мне нужно создать новый объект-контейнер и передать ему запрос на мой тест, но это не так хорошо работает.Вот что я делаю ...

/**
 * Create a mock request
 *
 * @return Illuminate\Http\Request
 */
public function createDummyRequest($headers = [], $payload = null): Request
{
    return new Request([], [], [], [], [], $headers, $payload);
}

/**
 * Create a dummy IOC container
 *
 * @return Illuminate\Container\Container
 */
public function createDummyContainer(): Container
{
    return new Container;
}

/** @test */
public function response_preferred_format_returns_xml()
{
    $container = $this->createDummyContainer();

    $request = $this->createDummyRequest(['Accept' => 'application/json'], json_encode($this->testArray));

    $container->instance('request', $request);

    $response = $this->createDummyResponse()->preferredFormat($this->testArray, 200, ['Accept' => 'application/xml']);

    $this->assertEquals($this->testXml, $response->getContent());
}

Я получаю ошибку:

ReflectionException: Class request does not exist

Я на правильном пути, или я упускаю что-то очевидное?Почему я не могу создать экземпляр класса Container и связать экземпляр Request, чтобы мой код мог его использовать?

...