繁体   English   中英

黄昏不像测试Laravel提交表单那样处理POST请求

[英]Dusk does not handle POST requests the same way Laravel does when testing a form submission

在Dusk中运行测试时,提交表单会生成验证错误,该错误显示为“查询字段是必需的”。 使用手动输入测试页面时不会发生该错误。

我在处理POST请求的控制器方法的第一行中添加了dd( $request ) 当我手动测试页面时,系统将请求转储到页面。 当我使用Dusk测试页面时,我得到了一个截图,该截图显示了从未执行过的代码行:页面重新加载并显示验证错误。

我已经在表单中搜索了名称为“ query”的隐藏输入。 它不存在。

我已经在控制器类和基类中搜索了用于测试“查询”输入的任何验证。 我什么都没找到。

任何人都可以向我指出正确的方向,以找出为什么该页面在使用serve命令可以正常工作时在自动化测试环境中不起作用?

过去有没有人看到过类似的错误?

该图显示了Dusk单击“保存”并提交表单后的屏幕截图。测试失败,因为在应用程序调用控制器之前发生了未知验证。

简短答案:检查页面以确认选择器正在获取正确的表单。 在这种情况下,测试人员会忘记菜单栏中存在表单。 测试是单击菜单栏中的按钮,而不是单击主页内容中的按钮。

原文:我想有时候您只需要走开再回到问题上即可。 我非常关注页面中心的表单,以至于忽略了菜单栏中带有输入名称为“ query”的输入的表单。

我用Dusk命令单击了错误的按钮,因为我的选择器应用于单独表单上的多个按钮。

这么晚才回复很抱歉

例如,我们可以使用PostController作为Post Model

您的商店功能可能看起来像

public function store(Request $request)
    {
        Post::create($request->all());
        return redirect()->route('post.index')->with('success','PostCreated Successfully');

}

如果您在函数的开头添加dd函数,它将起作用,即dd($request->all());

但是,如果您使用自定义要求

对于EG PostStoreRequest

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;


class PostStoreRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'post_name' => 'required',


        ];
    }

    /**
     * Custom message for validation
     *
     * @return array
     */
    public function messages()
    {
        return [
            'post_name.required' => 'Enter Post Name',
        ];
    }

}

PostController@store

public function store(PostStoreRequest $request)
        {
            Post::create($request->all());
            return redirect()->route('post.index')->with('success','PostCreated Successfully');

    }

即使您在函数顶部添加dd也是因为它首先验证了请求,然后它将进入函数

希望能帮助到你

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM