我得到了
传递给Tests\Unit\BaseUnitTestCase::assertMockedMethodRuns()的参数1必须是测试\单元\闭包的实例,即给定的闭包实例
将闭包传递给我的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的闭包似乎没有正确的命名空间。我该怎么解决这个问题?
发布于 2018-02-25 18:09:38
您将丢失并反向斜杠以告诉PHP Closure类将在全局命名空间中搜索:
public function assertMockedMethodRuns(\Closure $code)https://stackoverflow.com/questions/48976728
复制相似问题