Как мне контролировать пространство имен замыкания в PHP?

я собираюсь

Ошибка типа: Аргумент 1 передан
Tests \ Unit \ BaseUnitTestCase :: assertMockedMethodRuns () должен быть
экземпляр Tests \ Unit \ Closure, заданный экземпляр Closure

При прохождении закрытия моего assertMockedMethodRuns метод

BaseUnitTestCase

namespace Tests\Unit;

use Tests\TestCase;

class BaseUnitTestCase extends TestCase
{
public function assertMockedMethodRuns(Closure $code)
{
try {
$code($this);
} catch (\Mockery\Exception\InvalidCountException $e) {
$this->assertTrue(False, "Mocked method did not run");
}
}
}

Маршрут Тест (где я звоню assertMockedMethodRuns)

namespace Tests\Unit;

use App\Http\Controllers\PostController;

class RoutesTest extends BaseUnitTestCase
{
public function testGetPostList()
{
$mockPostController = \Mockery::mock('PostController');
$mockPostController->shouldReceive('index')->once();
$this->app->instance('PostController', $mockPostController);
$this->assertMockedMethodRuns(function() {
$this->call('GET','/post');
});
}
}

TestCase (откуда наследуется BaseTestCase)

namespace Tests;

use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\RefreshDatabase;

abstract class TestCase extends BaseTestCase
{
use CreatesApplication, DatabaseMigrations;
}

Кажется, что закрытие передается assertMockedMethodRuns не имеет правильного пространства имен. Как это исправить?

0

Решение

вы пропустили и обратный слеш, чтобы сказать PHP Closure класс должен быть найден в глобальном пространстве имен:

public function assertMockedMethodRuns(\Closure $code)
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector