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