InvalidArgumentException: Action App\Http\Controllers\App\Http\Controllers\OrderController@store 未定义

Posted

技术标签:

【中文标题】InvalidArgumentException: Action App\\Http\\Controllers\\App\\Http\\Controllers\\OrderController@store 未定义【英文标题】:InvalidArgumentException: Action App\Http\Controllers\App\Http\Controllers\OrderController@store not definedInvalidArgumentException: Action App\Http\Controllers\App\Http\Controllers\OrderController@store 未定义 【发布时间】:2021-02-18 02:06:12 【问题描述】:

我是单元测试新手,我正在使用 Laravel 8,

我总是收到这个错误:

InvalidArgumentException: Action App\Http\Controllers\App\Http\Controllers\OrderController@store not defined.
 

感谢您的帮助!

【问题讨论】:

【参考方案1】:

在您的测试用例中,您需要在命名空间之前添加\ 以获得绝对路径

$response = $this->postJson(action('\App\Http\Controllers\OrderController@store'), [
   'doAssigned' => false,
   'doValidate' => false,
]);

另外,你可以在没有命名空间的控制器上调用action,比如action('OrderController@store')

【讨论】:

谢谢,但在进行更改后,我在以下行出现错误:`$response->assertJsonPath('status', 'draft');` 错误是“返回了无效的 JSON从路线。” 我没有看到任何带有 status:draft 从您的控制器方法返回的 JSON,您可以执行 $this->postJson(...)->dump() 来查看返回的内容。 在添加 dump() 后我得到了 Error: Call to a member function dump() on string ,我的主要目标是测试当我的 `doAssigned' => false, and doValidate' => false` 时我得到 status = 'draft' , 在你的控制器中你需要返回return response()->json(['order' => $newOrder, 'status' => 'draft']); 在我的控制器中,我不确定是否可以将“状态”设置为“草稿”,因为状态可以是“草稿”或“待定”,具体取决于 dovalidate 和 doAssigned ,在我的测试我只想测试 doValidate 和 doAssigned 设置为 false @mmabdelgawad 的情况。

以上是关于InvalidArgumentException: Action App\Http\Controllers\App\Http\Controllers\OrderController@store 未定义的主要内容,如果未能解决你的问题,请参考以下文章

PHPUnit + Selenium`InvalidArgumentException:找不到元素`

出现错误:InvalidArgumentException:无法找到名称为 [default] [App\User] 的工厂

(InvalidArgumentException(code: 0): Disk [public] 没有配置驱动程序 Voyager

Laravel:错误 InvalidArgumentException

InvalidArgumentException,“未找到视图”,在 Lumen 5.2.6 上

导入AppiumLibrary报错: ImportError: cannot import name 'InvalidArgumentException