繁体   English   中英

如何在单元测试中伪造一个recaptcha?

[英]How do I fake a recaptcha in a unit test?

我正在使用Rails 5并且有一个带有Google recaptcha的表单。 我为此使用Rails gem

gem "recaptcha", require: "recaptcha/rails"

所以我有一个简单的表格

<%= form_for @comment, :html => {:class => "commentsForm"} do |f| %>
  <div class="field">
    <%= f.label :description, 'Your Comments' %><br>
    <%= f.text_area :description %>
  </div>
  <%= recaptcha_tags %>
  <div class="actions">
    <%= submit_tag 'Submit', :class => 'btn-feedback' %>
  </div>
<% end %>

和我的控制器来处理这个问题

  def create
    @comment = Comment.new(params[:comment].permit(:description))
    @comment.user = current_user
    if verify_recaptcha(model: @comment)

但是如何编写单元测试来测试控制器方法呢? 我不知道如何“伪造”recaptcha提交。 这就是我的全部

  test "do submit comment" do
    post comments_url, params: { comment: { description: "Some comments"} }

    # Verify we got the proper response
    assert_response :success
  end

但这失败了。 如何在单元测试中伪造一个recaptcha?

仅适用于V2:

使用以下测试密钥,您将始终获得No CAPTCHA并且所有验证请求都将通过。

站点密钥: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI

密钥: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe

资料来源: Google reCAPTCHA常见问题解答页面

不确定你对“假装”的意思。 如果要获得低分的验证返回(即机器人概率很高),则可以欺骗用户代理,如果在您的测试例程中可以做到这一点。

在SO上看到这个答案: 为了测试目的,是否有可能强制重新接收v2? (即假装是一个机器人)

暂无
暂无

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

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