在我工作的大多数网络应用程序中,我可以创建一个简单的测试脚本(test.php),加载所有依赖项(通常通过自动加载器),设置数据库连接,调用任何类方法,然后检查他们返回的结果确保一切正常。
示例:
$test = new Item;
var_dump($test->getItemStatus($itemid));
上面会显示它为该itemid返回的值的良好输出。
使用Laravel,执行这个简单的测试似乎要复杂得多......或者我可能过于复杂,并且有一种简单的方法可以做到这一点。
假设我想在Laravel 4应用程序中执行相同的操作。我想测试使用模型getItemStatus
的名为ItemsController
的控制器中方法Items
的输出。
如果我尝试以下操作,则会收到Symfony \ Component \ Debug \ Exception \ FatalErrorException
错误:
$items = App::make('ItemsController')->getItemStatus($itemid);
如果我在routes.php中定义这条路线:
Route::get('items/get-item-status', array('as' => 'getItemStatus', 'uses' => 'ItemsController@getItemStatus'));
然后尝试以下操作,我在请求输出中得到Symfony\Component\HttpKernel\Exception\NotFoundHttpException
:
$request = Request::create('items/get-item-status', 'GET', array());
$items = Route::dispatch($request)->getContent();
答案 0 :(得分:1)
在我看来,Laravel要简单得多,也许这也就是为什么你可能会过度思考它。
让我们从一个非常基本的路由器开始。以下是使用基本路由器/控制器中的Laravel应用程序进行简单调试的一些选项:
Route::get('test', function() {
$test = new Item;
dd($test);
Log::info($test); // will show in your log
var_dump($test);
});
现在关注:
http://yourserver.com/test
它应该停在
dd($test);
在该线上进行Vardumping和死亡。评论它,再试一次,等等。
所有这些也可以在控制器中使用:
Route::get('test/{var?}', 'TestController@index');
同样的方式:
class TestController extends Controller {
public function index($var = null)
{
$test = new Item;
dd($var);
dd($test);
Log::info($var);
Log::info($test);
var_dump($test);
var_dump($var);
}
}
您的路线:
Route::get('items/get-item-status', array('as' => 'getItemStatus', 'uses' => 'ItemsController@getItemStatus'));
如果您遵循:
,也应该有效http://yourserver.com/items/get-item-status
如果没有,请尝试按照
http://yourserver.com/public/index.php/items/get-item-status
或者只是
http://yourserver.com/public/items/get-item-status
因为您可能有虚拟主机或.htaccess配置问题。