gpt4 book ai didi

php - 如何对 Laravel Controller 进行简单测试?

转载 作者:行者123 更新时间:2023-12-02 04:31:50 26 4
gpt4 key购买 nike

在我开发过的大多数 Web 应用程序中,我可以创建一个简单的测试脚本 (test.php)、加载所有依赖项(通常通过自动加载器)、设置数据库连接、调用任何类方法,然后检查他们返回的结果以确保一切看起来都正确。

示例:

$test = new Item;

var_dump($test->getItemStatus($itemid));

上面将显示为该 itemid 返回的值的良好输出。

使用 Laravel,仅执行这个简单的测试似乎要复杂得多......或者也许我让它过于复杂,并且有一个简单的方法可以做到这一点。

假设我想在 Laravel 4 应用程序中做同样的事情。我想在使用模型 Items 的名为 ItemsController 的 Controller 中测试方法 getItemStatus 的输出。

如果我尝试以下操作,我会收到 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();

最佳答案

在我看来,Laravel 要简单得多,也许这就是为什么你可能会想太多。

让我们从一个非常基本的路由器开始。以下是在基本路由器/ Controller 中使用 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 并在那条线上死亡。评论它,再试一次,等等。

所有这些也可以在 Controller 中工作:

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 配置问题。

关于php - 如何对 Laravel Controller 进行简单测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22871503/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com