gpt4 book ai didi

php - 如何测试laravel Controller 方法?

转载 作者:行者123 更新时间:2023-11-28 20:49:24 24 4
gpt4 key购买 nike

我的 Controller 看起来像这样:

public function store(Request $request) {

$validateData = $request->validate([
'name' => 'required|unique:languages',
'code' => 'required|size:3',
'flag' => 'required|size:2'
]);

$language = new Language();
$language->name = $request->name;
$language->code = $request->code;
$language->flag = $request->flag;
$saveLanguage = $language->save();

if(!$saveLanguage){
return response()->json(['error'=>'Something went wrong, please try later.'],500);
}

return response()->json(['success'=>'Language has been created successfully', 'data'=>$language],200);

如您所见,我正在实例化一个新的 Language 对象并且一切正常,但第一个问题是,假设我将来更改 Language 类(例如:您必须在构造函数中传递 2 个参数),我必须更改这个 Controller 和我在其中实例化 Language 对象的所有其他 Controller 。

第二个问题是我不能或很难测试这个 Controller 。

我很好奇在 Laravel 中解决这个问题的最佳方案是什么?

例如,对我在 Controller 中使用的每个模型使用简单工厂或工厂方法模式是否是一个很好的解决方案。

我认为当你在其他类中编写类似这样的 $var = new SomeClass() 时,这个 otherClass 依赖于 SomeClass 并且当你想更改 SomeClass 您必须将 otherClass 更新为。您对此有何看法,我该如何避免。

最佳答案

或者您可以使用 Eloquent Create 函数,这样您就不必担心构造函数。

$language = Language::create($request->only(['name', 'code', 'flag']));

此函数将数据插入数据库并返回模型。

关于php - 如何测试laravel Controller 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53388883/

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