AbstractController :: ActionNotFound异常:控制器找不到操作<url>

时间:2020-05-07 04:12:23

标签: ruby-on-rails rspec rspec-rails

在我的Rails应用程序中,我具有以下要测试的网址。

"/team/17682/csrs/102094/verification_check?dcv_protocol=https&selected_csr=102094&choose_cn=138012"

在我的Rails应用程序中,通过浏览应用程序的工作流程,日志显示该URL正在作为JSON处理。

enter image description here

在我的一个js文件中,发送此请求的代码如下:

  $.ajax({url: '<%=verification_check_csr_path(@ssl_slug, @csr.id)%>?dcv_protocol=cname&selected_csr='+
        $('#selected_csr').val()+'&choose_cn='+$(dcv_select).parents('tr').find('input[id*=d_name_id]').val()}).done()

关于此ajax调用的唯一一件事就是简单地说明一个事实,即一个js文件正在调用ajax,并且正在传递的参数是从html元素派生的。

现在在我的rspec规范文件中,我在触发此get请求时遇到错误,而我似乎无法确定原因。这是我在spec文件中尝试过的一些实现方式,其中包含错误。

这是我传递的参数。它们与应该传递的参数匹配。

params = {
      dcv_protocol: 'http',
      choose_cn: 1234,
      selected_csr: 5678
    }

# Attempt 1 #
get verification_check_csr_url(ssl_account.ssl_slug, csr.id, params)
*** AbstractController::ActionNotFound Exception: The action 'http://test.host/team/team-vvujoqqyde/csrs/1003/verification_check?choose_cn=1001&dcv_protocol=http&selected_csr=1003' could not be for CsrsController

# Attempt 2 #
get verification_check_csr_url(ssl_account.ssl_slug, csr.id, params), xhr: true
Same Error as Attempt 1: xhr: true did not do anything

# Attempt 3 #
get "#{verification_check_csr_path(ssl_account.ssl_slug, csr.id)}?dcv_protocol=http&selected_csr=#{csr.id}&choose_cn=#{domain.id}"
*** AbstractController::ActionNotFound Exception: The action '/team/team-vvujoqqyde/csrs/1003/verification_check?dcv_protocol=http&selected_csr=1003&choose_cn=1001' could not be found for CsrsController

# Attempt 4 #
get "#{verification_check_csr_path(ssl_account.ssl_slug, csr.id)}?dcv_protocol=http&selected_csr=#{csr.id}&choose_cn=#{domain.id}", xhr: true
Same as Attempt #3

# Attempt 5 #
get :verification_check, team: ssl_account.ssl_slug, id: csr.id, params: params
This produces an error in the test spec but I can't walk through it with byebug

我确信我通过这些尝试正确地调用了该url,但是由于某种原因找不到该操作,我对为什么感到困惑。

耙道显示以下内容:

verification_check_csr GET  (/team/:ssl_slug)/csrs/:id/verification_check(.:format) csrs#verification_check

最后,当我尝试放置此rspec匹配器expect(response).to have_http_status(200)时,我得到了404。我缺少什么吗?

0 个答案:

没有答案
相关问题