【问题标题】: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.
 

感谢您的帮助!

【问题讨论】:

    标签: laravel api unit-testing controller laravel-8


    【解决方案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 的情况。
    猜你喜欢
    • 2021-07-08
    • 2019-05-13
    • 2017-06-30
    • 2018-04-06
    • 2020-11-03
    • 2019-04-13
    • 2019-11-04
    • 1970-01-01
    • 2020-05-01
    相关资源
    最近更新 更多