Как получить доступ к экземпляру Laravel при выполнении интеграционных тестов?

Я работаю над написанием тестов с использованием Codeception + Selenium + PhantomJS. Проблема, с которой я столкнулся, заключается в том, что мне нужно имитировать различные классы и связывать разные реализации в разных тестах (иногда имитирует классы с предопределенными результатами, возвращаемыми их методами).

При написании модульных тестов с PHPUnit это просто:

    $setterMock = Mockery::mock(MyClass::class);

    $setterMock->shouldReceive('classMethod')
                ->andReturn('result');

    $this->app->instance(MyClass::class, $setterMock);

Но при написании интеграционных тестов я не знаю, как получить доступ к экземпляру $ app. Я пытался применить аналогичный код в __bootstrap.php внутри папки приемочных тестов, но это не сработало.


person naneri    schedule 22.08.2016    source источник


Ответы (1)


Извините, но вы не можете.

PhantomJS обращается к серверу через HTTP, так что ничего не может быть смоделировано.

Вы можете реализовать тесты с макетами, используя модуль Laravel5 вместо Webdriver.

person Naktibalda    schedule 22.08.2016
comment
У меня есть код JS, который нужно запустить. Этот модуль позволит мне запустить его? - person naneri; 22.08.2016