我如何控制PHP中关闭的命名空间



我得到了

TypeError:参数1传递给 tests ution baseunittestcase :: AssertMockedMethodRuns((必须是一个 测试的实例单位闭合,闭合实例

将闭合传递给我的assertMockedMethodRuns方法

baseunittestcase

namespace TestsUnit;
use TestsTestCase;
class BaseUnitTestCase extends TestCase
{
    public function assertMockedMethodRuns(Closure $code)
    {
        try {
            $code($this);
        } catch (MockeryExceptionInvalidCountException $e) {
            $this->assertTrue(False, "Mocked method did not run");
        }
    }
}

路由测试(我称assertMockedMethodRuns(

namespace TestsUnit;
use AppHttpControllersPostController;
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 IlluminateFoundationTestingTestCase as BaseTestCase;
use IlluminateFoundationTestingDatabaseMigrations;
use IlluminateFoundationTestingRefreshDatabase;
abstract class TestCase extends BaseTestCase
{
    use CreatesApplication, DatabaseMigrations;
}

似乎封闭传递给assertMockedMethodRuns没有适当的名称空间。我该如何解决?

您缺少并反向斜杠告诉PHP Closure类是在全局名称空间中进行搜索:

public function assertMockedMethodRuns(Closure $code)

最新更新