在我的Rails应用程序中,我具有以下要测试的网址。
"/team/17682/csrs/102094/verification_check?dcv_protocol=https&selected_csr=102094&choose_cn=138012"
在我的Rails应用程序中,通过浏览应用程序的工作流程,日志显示该URL正在作为JSON处理。
在我的一个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。我缺少什么吗?