【问题标题】:How to test form submission如何测试表单提交
【发布时间】:2020-08-15 02:49:43
【问题描述】:

我有一个用户填写的带有一些 html 的登录表单:

<form method="post" enctype="multipart/form-data">
        <div class="form"><input name="username"> </div>
        <div class="form">
        <button type="submit">Login</button>
</form>

我想测试用户名是否被正确接收。我可以发送一个多部分表单,但是它包含在请求的 body 中,而不是作为 postform

    form := url.Values{}
    form.Set("username", "Bob")

    // Create request
    req, _ := http.NewRequest("POST", "/login", strings.NewReader(form.Encode())) // sends as multipart form in request body
    req.Header.Set("Content-Type", "application/www-form-urlencoded")
    testRouter.ServeHTTP(rr, req)

如何使用作为 Postform 附加的表单数据发出请求,以便我可以从后端提取它 c.Postform("username"),就像通过浏览器提交一样?

【问题讨论】:

    标签: go testing go-gin


    【解决方案1】:

    将按钮保留在表单中,按钮类型为提交

    <form method="post" enctype="multipart/form-data">
       <div class="form">
          <input name="username"> 
          <input type="submit" name="submit" value="submit"/>
       </div>
    </form>
    

    【讨论】:

    • 谢谢!抱歉我的错误我应该更清楚 - 我确实有一个提交按钮。我会相应地编辑我的问题。
    【解决方案2】:

    想通了。你可以简单地转动req.PostForm = form....

    【讨论】: