为什么在测试我的控制器时会出现路由未定义错误?
Why am I getting a route undefined error when testing my controller?
我正在尝试通过在我的单元测试中调用我的控制器操作来内部测试 API。出于某种原因,我收到 InvalidArgumentException: Route [ListController@create] not defined。谁能帮忙?
ListControllerTest.php
use Guzzle\Tests\GuzzleTestCase,
Guzzle\Plugin\Mock\MockPlugin,
Guzzle\Http\Message\Response,
Guzzle\Http\Client,
Guzzle\Service\Client as ServiceClient,
Guzzle\Http\EntityBody;
class ListTest extends TestCase {
public function testCreateList()
{
$user_id = getTestReceiverUserId();
$response = $this->action(
'POST',
'ListController@create',
[
'body' => array(
"name" => "open,shared",
"users" => array(array("user_id" => $user_id)),
"visibility" => "2",
"joinability" => "2",
"adminship" => "1",
"color" => "#2bc069"
),
'headers' => array('Auth' => getTestAuthSender())
]
);
}
routes.php
Route::group(array('namespace' => 'App\Controllers\v2', 'prefix' => '2.0'), function()
{
Route::controller('user', 'UserController');
Route::controller('invite', 'InviteController');
Route::controller('list', 'ListController');
Route::post('/login','AuthController@login');
Route::any('/logout','AuthController@logout');
});
ListController.php
namespace App\Controllers\v1;
use BaseController;
use Timothylhuillier\LaravelMixpanel\Facades\LaravelMixpanel;
class ListController extends BaseController
{
public function postCreate()
{
Some Code
}
我想这是因为您的 ListController
位于 v2
命名空间中。
尝试更改:
'ListController@create',
至:
'v2\ListController@postCreate',
希望对您有所帮助!
我正在尝试通过在我的单元测试中调用我的控制器操作来内部测试 API。出于某种原因,我收到 InvalidArgumentException: Route [ListController@create] not defined。谁能帮忙?
ListControllerTest.phpuse Guzzle\Tests\GuzzleTestCase,
Guzzle\Plugin\Mock\MockPlugin,
Guzzle\Http\Message\Response,
Guzzle\Http\Client,
Guzzle\Service\Client as ServiceClient,
Guzzle\Http\EntityBody;
class ListTest extends TestCase {
public function testCreateList()
{
$user_id = getTestReceiverUserId();
$response = $this->action(
'POST',
'ListController@create',
[
'body' => array(
"name" => "open,shared",
"users" => array(array("user_id" => $user_id)),
"visibility" => "2",
"joinability" => "2",
"adminship" => "1",
"color" => "#2bc069"
),
'headers' => array('Auth' => getTestAuthSender())
]
);
}
routes.php
Route::group(array('namespace' => 'App\Controllers\v2', 'prefix' => '2.0'), function()
{
Route::controller('user', 'UserController');
Route::controller('invite', 'InviteController');
Route::controller('list', 'ListController');
Route::post('/login','AuthController@login');
Route::any('/logout','AuthController@logout');
});
ListController.php
namespace App\Controllers\v1;
use BaseController;
use Timothylhuillier\LaravelMixpanel\Facades\LaravelMixpanel;
class ListController extends BaseController
{
public function postCreate()
{
Some Code
}
我想这是因为您的 ListController
位于 v2
命名空间中。
尝试更改:
'ListController@create',
至:
'v2\ListController@postCreate',
希望对您有所帮助!