ruby-on-rails – 如何测试rails 4确认对话与Capybara和Polterge
发布时间:2020-12-16 21:45:32 所属栏目:百科 来源:网络整理
导读:我试图测试一个链接到一个破坏动作引发一个本地浏览器确认框与正确的消息. 链接正在使用rails’link_to: link_to 'Delete',user_path,method: :delete,data: { confirm: "Are you sure?" } 并生成以下html: a data-confirm="Are you sure?" data-method="d
我试图测试一个链接到一个破坏动作引发一个本地浏览器确认框与正确的消息.
链接正在使用rails’link_to: link_to 'Delete',user_path,method: :delete,data: { confirm: "Are you sure?" } 并生成以下html: <a data-confirm="Are you sure?" data-method="delete" href="/users/6" rel="nofollow">Delete</a> 该功能在浏览器中正常工作,但我想在我的rspec功能规范中进行测试. 我试图清除浏览器的确认功能,如here和this gist所述,但是我无法使其工作. it 'requests confirmation',js: true do visit user_path(user) page.execute_script " window.confirmMsg = null; window.confirm = function(msg) { window.confirmMsg = msg; return true; };" click_link 'Delete' expect(page.evaluate_script('window.confirmMsg')).to eq('Are you sure?') end 从rspec发出以下错误: Failure/Error: expect(page.evaluate_script('window.confirmMsg')).to eq('Are you sure?') expected: "Are you sure?" got: nil (compared using ==) 但是,如果我直接通过page.execute_script直接打电话确认: it 'requests confirmation',js: true do visit user_path(user) page.execute_script " window.confirmMsg = null; window.confirm = function(msg) { window.confirmMsg = msg; return true; }; window.confirm('Are you sure?');" expect(page.evaluate_script('window.confirmMsg')).to eq('Are you sure?') end 然后测试通过. 同时单击删除链接将导致测试失败,即使直接为page.execute_script调用确认: it 'requests confirmation',js: true do visit user_path(user) page.execute_script " window.confirmMsg = null; window.confirm = function(msg) { window.confirmMsg = msg; return true; }; window.confirm('Are you sure?');" click_link 'Delete' expect(page.evaluate_script('window.confirmMsg')).to eq('Are you sure?') end 从rspec发出同样的错误: Failure/Error: expect(page.evaluate_script('window.confirmMsg')).to eq('Are you sure?') expected: "Are you sure?" got: nil (compared using ==) 为什么测试失败?而且,如何正确地测试确认对话? 语境: 我从Vagrant虚拟机运行我的测试,这是Ubuntu 12.04.4 LTS和运行ruby 2.1.2p95. 我的Gemfile.lock显示我有以下版本: rails (4.1.4) poltergeist (1.5.1) capybara (2.4.1) 解决方法
page.driver.browser.accept_js_confirmed已被弃用.而是使用
page.accept_confirm do click_link 'Delete' end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ruby-on-rails – Rails中的永久变量
- ORACLE 执行EXECUTE IMMEDIATE没反应
- Flex3学习轨迹:使用ToolTipManager来设置延时提示
- 宇宙最强调试器DDD(Data Display Debugger)
- Property startTransmit/stopTransmit not found on flash.
- c# – 私有静态只读字段上的代码约定和失败
- vue router 配置路由的方法
- 依赖项 – VS2012和VCOMP110.dll
- 优雅的开发Swift和Objective C混编的Framework
- 《Test-Driven development By Example》阅读(三)