加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Capybara Rspec测试可能对AJAX失败 – 测试con

发布时间:2020-12-17 02:40:58 所属栏目:百科 来源:网络整理
导读:我试图测试一个可信的textarea是否在我的代码中工作,但我得到一个我似乎无法解决的错误.问题是发送到控制器的参数不是我对 AJAX的期望.这是我的代码: rspec的 describe 'editing contenteditables',js: true do before do page.find('#artistdescription').
我试图测试一个可信的textarea是否在我的代码中工作,但我得到一个我似乎无法解决的错误.问题是发送到控制器的参数不是我对 AJAX的期望.这是我的代码:

rspec的

describe 'editing contenteditables',js: true do
  before do
    page.find('#artistdescription').set('Pizza')
    page.find('#similarArtists').click #in order to blur out of contenteditable
  end

  it {should have_content('Pizza')}
end

视图

<% if @is_current_artist %>
  <% description_text = (@artist.description.blank? && @is_current_artist) ? "test" : @artist.description %>
  <textarea contenteditable='true' id='artistdescription'>
    <%= description_text %>
  </textarea>
<% else %>
  ...

AJAX

$(document).on('blur','#artistdescription',->
  $.ajax(
    url: "/artists/" + $('#idnumber').html()
    type: "PATCH"
    datatype: "JSON"
    data: {
      artist: {
        description: $('#artistdescription').val().replace(/(<([^>]+)>)/ig,"")
      }
      session_code: getCookie('session_code');
    } 
  )
)

调节器

def update
    @artist = Artist.find(params[:id])
    p 'Hello from update'
    return if !active_session && !is_current_artist
    p 'Logged in!'
    pp artist_params
    @artist.update_attributes(artist_params) #error here

  def artist_params
    #Add more contenteditable stuff here
    p '=====================TASTY TACOS!'
    pp params
    params.require(:artist).permit(:artist_name,:route_name,:password,:email,:background_image,:description,:hometown,:genre) #error here
  end

这是我的错误信息

"Hello from update"
"Logged in!"
"=====================TASTY TACOS!"
{"action"=>"update","controller"=>"artists","id"=>"1"}
F

Failures:

  1) Current Artist editing contenteditables should text "Pizza"
     Failure/Error: Unable to find matching line from backtrace
     ActionController::ParameterMissing:
       param is missing or the value is empty: artist
     # ./app/controllers/artists_controller.rb:151:in `artist_params'
     # ./app/controllers/artists_controller.rb:48:in `update'

Finished in 15.41 seconds (files took 16.02 seconds to load)
1 example,1 failure

Failed examples:

rspec ./spec/features/editting_artist_spec.rb:32 # Current Artist editting contenteditables should text "Pizza"

谢谢您的帮助.

解决方法

事实证明这是QtWebkit本身的一个问题,正如上面提到的Finch:
https://github.com/thoughtbot/capybara-webkit/issues/553

有一种解决方法,发送POST请求并手动重定向到更新控制器方法(详细信息):
https://stackoverflow.com/a/17870287/472768

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读