首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何控制PHP中闭包的命名空间?

如何控制PHP中闭包的命名空间?
EN

Stack Overflow用户
提问于 2018-02-25 18:07:38
回答 1查看 356关注 0票数 0

我得到了

传递给Tests\Unit\BaseUnitTestCase::assertMockedMethodRuns()的参数1必须是测试\单元\闭包的实例,即给定的闭包实例

将闭包传递给我的assertMockedMethodRuns方法时

BaseUnitTestCase

代码语言:javascript
复制
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)

代码语言:javascript
复制
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从这里继承)

代码语言:javascript
复制
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的闭包似乎没有正确的命名空间。我该怎么解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-25 18:09:38

您将丢失并反向斜杠以告诉PHP Closure类将在全局命名空间中搜索:

代码语言:javascript
复制
public function assertMockedMethodRuns(\Closure $code)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48976728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档