ruby-on-rails – Capybara:测试页面创建对象的当前路径

ruby-on-rails – Capybara:测试页面创建对象的当前路径,第1张

概述创建对象后应重定向到动作节目.我如何检查当前路径? feature 'add lost pet' do given(:data) {attributes_for(:lost_pet)} background do visit root_path click_on 'Register new lost pet' end scenario 'add new lo 创建新对象后应重定向到动作节目.我如何检查当前路径?

feature 'add lost pet' do  given(:data) {attributes_for(:lost_pet)}  background do    visit  root_path    click_on 'Register new lost pet'  end  scenario 'add new lost pet with valID data' do    within '#new_lost_pet' do      fill_in 'name',with: data[:name]      fill_in 'Type',with: data[:type]      fill_in 'Breed',with: data[:breed]      fill_in 'Gender',with: data[:gender]      fill_in 'Size',with: data[:size]      fill_in 'Colour',with: data[:colour]      fill_in 'Age',with: data[:age]      fill_in 'Age unit',with: data[:age_unit]      fill_in 'Description',with: data[:description]      fill_in 'Collar description',with: data[:collar_description]      check 'Desexed',:checked      check 'microchipped',:checked      fill_in 'microchip number',with: data[:microchipped_number]      select '2015',from: "lost_pet[date_missing(1i)]"      select 'October',from: 'lost_pet[date_missing(2i)]'      select '10',from: 'lost_pet[date_missing(3i)]'      fill_in 'Rewald',with: data[:rewald]      fill_in 'Image',with: data[:image]      fill_in 'Adress lost',with: data[:adress_lost]      click_on 'Create'    end      expect(current_path).to eq lost_pet_path(????)  end

对于lost_pet_path我需要ID,但是我如何创建ID?或者如何更好地检查Capybara的路径?

解决方法
expect(current_path).to eq ...

不使用Capybara的等待行为 – 这意味着由于click_on是异步的(不等待屏幕上的任何内容,或者提交完成),您的测试可能非常不稳定.你用得好多了

expect(page).to have_current_path(expected_path)

因为那将在检查预期路径时使用Capybara的等待行为.

最重要的是你有一个问题,就是在click_on执行(异步)之后还没有创建LostPet对象,因此调用LostPet.last很可能会返回nil.你有几个选择

等待页面上出现的一些文本

expect(page).to have_text('Lost Pet created') # shows in a flash message,or header on the show page,etc# since you kNow the show page is visible Now you can query for the last LostPet createdexpect(page).to have_current_path(lost_pet_path(LostPet.last))

或者,使用带有have_current_path的正则表达式选项,并且不必担心验证URL的实际ID

expect(page).to have_current_path(/lost_pet\/[0-9]+/) # match the regex to whatever your urls actually are

或类似的东西

总结

以上是内存溢出为你收集整理的ruby-on-rails – Capybara:测试页面创建对象的当前路径全部内容,希望文章能够帮你解决ruby-on-rails – Capybara:测试页面创建对象的当前路径所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1257677.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存