JavaScript   发布时间:2022-04-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了RSpec-rails-capybara – 不同的失败与:js => true和without大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在建立个人帐单的设置屏幕.控制器/视图位于管理命名空间中.

当运行第一个测试时没有:js =>真的我遇到一个失败,我认为这个链接不起作用,因为它的帮助器使用一个js脚本来构建一个嵌套的一组字段(基于Railscasts单个表单,多个表 – 嵌套属性).

@H_696_4@@R_942_4895@: 1) Patient Setup create patient bill heading - with extended details -with valid data Failure/Error: fill_in "Extended Bill Heading",:with => 'Regular Registration' Capybara::ElementNotFound: cAnnot fill in,no text field,text area or password field with id,name,or label 'Extended Bill Heading' found # (eval):2:in `fill_in' # ./spec/requests/admin/patient_setup_pages_spec.rb:52:in `block (4 levels) in <top (required)>' Finished in 0.83047 seconds 3 examples,1 failure,2 pending

但是当我使用:js = true,我正在收到一个失败,似乎是在登录时无效的用户/密码在运行时在屏幕上闪烁.

@H_696_4@@R_942_4895@: 1) Patient Setup create patient bill heading - with extended details -with valid data Failure/Error: click_link 'System' Capybara::ElementNotFound: no link with title,id or text 'System' found # (eval):2:in `click_link' # ./spec/requests/admin/patient_setup_pages_spec.rb:22:in `block (2 levels) in <top (required)>' Finished in 6.33 seconds 3 examples,2 pending

这是代码,支持所有这一切.

@H_696_4@spec/requests/admin/patient_setup_spec.rb require 'spec_Helper' feature 'Patient Setup' do let!(:ci_user) { FactoryGirl.create(:user,name: "configuration ENGIneer",password: "password",password_confirmation: "password" ) } let!(:admin_rolE) { FactoryGirl.create(:admin_rolE) } let!(:assignment) { FactoryGirl.create(:assignment,:role => admin_role,:user => ci_user ) } before do visit login_path fill_in "Name",with: "configuration ENGIneer" fill_in "password",with: "password" click_button "Login" save_and_open_page click_link 'System' click_link 'Patient Setup' end describe "create patient bill heading" do before do click_link 'New Bill Heading' fill_in 'Bill heading',:with => 'Consultation' fill_in 'Abbreviation',:with => "CON" end context "- no extended details" do pending scenario "- with valid data" do pending click_button 'Create Patient bill heading' page.should have_content('Patient Bill Heading created.') end end context "- with extended details",:js => true do #(without :js => true 1st error) before do # save_and_open_page click_link "Extended Bill Heading" # save_and_open_page end scenario "-with valid data" do save_and_open_page fill_in "Extended Bill Heading",:with => 'Regular Registration' end end end end

这是我的工厂设置.

@H_696_4@spec/factories.rb FactoryGirl.define do # Users,Roles factory :user do name "Joesephine Bloggs" password "testmenow" password_confirmation "testmenow" end factory :admin,:class => User do sequence(:Name) { |n| "Administrator-#{n}" } password "adminiam" password_confirmation "adminiam" after(:create) do |user| FactoryGirl.create(:assignment,:role => FactoryGirl.create(:admin_rolE),:user => user ) end end factory :role do description { "Clerical-#{rand(99)}" } factory :admin_role do description "Admin" end end factory :assignment do user role end # Patients Module factory :patienT_Bill_heading do sequence(:bill_heading) { |n| "bill-heading-#{n}" } sequence(:abbreviation) { |n| "abbreviation-#{n}" } factory :delete_patienT_Bill_heading,:class => PatientBillHeading do bill_heading :bill_heading abbreviation :abbreviation end end end

这是我看到的链接,可以调用生成嵌套属性字段的帮助器.

@H_696_4@<p> <%= link_to_add_fields "Extended Bill Heading",f,:patient_extended_bill_headings %> </p>

这里是帮手.

@H_696_4@Helpers/application_Helper.rb def link_to_add_fields(name,association,options={}) defaults = { :partial_name => nil } options = defaults.merge(options) new_object = f.object.send(association).klass.new id = new_object.object_id fields = f.fields_for(association,new_object,child_index: id) do |builder| if options[:partial_name].nil? render(association.to_s.singularize + "_fields",f: builder) else render(options[:partial_name],f: builder) end end link_to("#{name} <i class='icon-plus icon-white'></i>".html_safe,'#',class: "btn btn-success add_fields",data: {id: id,fields: fields.gsub("\n","")} ) end

我正在努力提高我的RSpec测试知识,因为我已经成功地在我的应用程序中构建了这个工作,一小时后才弄清楚为什么我会得到测试失败.所以在应用程序中它的作品,但我想了解如何使我的测试通过.

我的断言是一个错误是由于使用js来创建链接,而CApybara没有运行它,因为我不使用:js =>真正的选择?

任何人都可以看到我在使用以下操作时出错:js =>真正的选择?

解决方法

你的spec_Helper.rb可能有config.use_transactional_fixtures = true.它不适用于Capybara JavaScript规范,因为服务器和浏览器客户端在单独的线程上运行.由于客户端不可见服务器上的数据库事务,客户端对于在let!()中创建的用户并不知道,所以用户无法登录系统.

您需要在每次运行之前/之后关闭事务性固定装置并清理数据库(虑gem database_cleaner)以了解您的js规范.

@H_696_4@RSpec.configure do |config| config.use_transactional_fixtures = false config.before(:suitE) do DatabaseCleaner.clean_with :truncation end config.before(:each) do if example.metadata[:js] DatabaseCleaner.strategy = :truncation else DatabaseCleaner.strategy = :transaction end DatabaseCleaner.start end config.after(:each) do DatabaseCleaner.clean end end

上述代码段摘自the contact manager app readme,稍作修改

大佬总结

以上是大佬教程为你收集整理的RSpec-rails-capybara – 不同的失败与:js => true和without全部内容,希望文章能够帮你解决RSpec-rails-capybara – 不同的失败与:js => true和without所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。