Я пытаюсь научиться использовать Mockery с Laravel 5. Я основывал свои усилия в основном на книге Уэя (Laravel Testing Decoded) и других учебниках, в которых говорится, что для интеграции [с PHPUnit] требуется только метод tearDown(). Так что я включил это. Проблема в том, что он, кажется, не сбрасывает вещи между тестами. Содержимое моего тестового класса выглядит примерно так:
public function __construct()
{
$this->mock = Mockery::mock('Class\To\Mock');
}
public function tearDown()
{
Mockery::close();
}
public function test_RedirectWithoutAuthentication()
{
// Act
$this->call('GET', '/path/1');
// Assert
$this->assertRedirectedTo('/auth/login');
}
public function test_X()
{
// Arrange
$this->mock->shouldReceive('MockedClassMethod')->once();
// Act
$this->call('GET', '/path/1');
}
Первый тест работает, и промежуточное ПО Auth отправляет пользователя на страницу входа. В интересах TDD я написал второй тест до того, как MockedClassMethod был фактически написан. Так что, на мой взгляд, он должен эффектно потерпеть неудачу. Но это не так. Это проходит!
Если я изменю порядок тестов, он «работает» (незаписанный терпит неудачу, аутентификация проходит), что заставляет меня поверить, что на самом деле это не проблема порядка, а что-то связанное с тем, что один тест не очищается перед следующим.
Любая информация спасет мои оставшиеся волосы от вырывания. :-)
public function __construct()
наprotected function setUp()
? - person Matteo   schedule 04.08.2015