我得到了
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)