我需要在Rspec / capybara请求规范中存根current_user方法的响应。 该方法在ApplicationController定义,并使用helper_method。 该方法应该简单地返回一个用户ID。 在testing中,我希望这种方法每次都返回相同的用户ID。 或者,我可以通过在spec(这是current_user返回的内容)中设置session[:user_id]来解决我的问题…但是这似乎也不起作用。 这两者中的哪一个可能? 编辑: 这是我得到的(它不工作,它只是运行正常的current_user方法)。 require 'spec_helper' describe "Login" do before(:each) do ApplicationController.stub(:current_user).and_return(User.first) end it "logs in" do visit '/' page.should have_content("Hey there user!") end end 也不工作: require 'spec_helper' describe "Login" do before(:each) do @mock_controller = mock("ApplicationController") @mock_controller.stub(:current_user).and_return(User.first) end it "logs in" do visit '/' page.should have_content("Hey there user!") end […]
我已经尝试了几个在线发现的例子,但没有运气。 我正在查看确认删除链接的确认消息。 最后一次尝试是下面的代码,但是导致了一个Capybara :: NotSupportedByDriverError错误。 def confirm_dialog page.evaluate_script('window.confirm = function() { return true; }') end
对于HTML <select id="date"> <option value="20120904">Tue 4 Sep 2012</option> <option value="20120905">Wed 5 Sep 2012</option> <option value="20120906">Thu 6 Sep 2012</option> </select> 我有以下Capybara Ruby代码: select "20120905", :from => "date" 但是这个错误与: cannot select option, no option with text '20120905' in select box 'date' (Capybara::ElementNotFound) 但是,如果我这样做 select "Wed 5 Sep 2012", :from => "date" 没关系。 是否可以通过价值而不是文本在水豚中select一个选项? 谢谢
我正在写一个黄瓜testing,我想要在一个元素的HTML。 例如: within 'table' do # this works find('//tr[2]//td[7]').text.should == "these are the comments" # I want something like this (there is no "html" method) find('//tr[2]//td[7]').html.should == "these are the <b>comments</b>" end 有人知道怎么做吗?
PhantomJS和capybara-webkit有什么区别? capybara-webkit比PhantomJS有什么优势? 哪两个是最有效的工具? 其他 …
在使用Steak,Capybara和RSpec的Rails 3应用程序中,如何testing页面的标题?
也许这实际上并不是我遇到的问题,但似乎在“click_link”与target =“_ blank”的链接时,会话将焦点放在当前窗口上。 所以我要么能够切换到新窗口,要么忽略_blank属性 – 本质上,我只是希望它实际上转到由链接指示的页面,所以我可以确保它是正确的页面。 我使用webkit和selenium驱动程序。 我在下面提交了我的发现。 非常感谢一个更彻底的答案。 此外,这只适用于selenium – 相当于webkit驱动程序(或指出我可以发现它自己)将不胜感激。
我知道在水豚,你可以做这样的事情: page.should have_css("ol li", :count => 2) 但是,假设页面只有一个匹配的元素,这个错误不是非常具有描述性: 1) initial page load shows greetings Failure/Error: page.should have_css("ol li", :count => 2) expected css "ol li" to return something 而不是这个相当晦涩的错误消息,有没有一种方式来写错误输出的错误输出类似'当匹配'李',预期:2,find:1'的断言。 显然,我可以自己做一个自定义的逻辑来处理这样的行为 – 我问有没有办法做到这一点“开箱即用”? 对于它的价值,我使用Selenium驱动程序和RSpec。
我正在使用许多jQuery插件,这些插件经常创build没有id或其他标识属性的DOM元素,并且只有在水豚(例如点击)中获得它们的唯一方法是先让邻居(它的祖先的另一个孩子) 。 但是我没有find任何地方,水豚支持这样的事情,例如: find('#some_button').parent.fill_in "Name:", :with => name ?
加载页面后,我有运行的代码,并根据xhr返回的数据隐藏和显示各种项目。 我的集成testing看起来像这样: it "should not show the blah" do page.find('#blah').visible?.should be_true end 当我手动去上下文中的这个testing运行,#blah是不可见的,因为我期望。 我怀疑Capybara正在查看页面的初始状态(在这种情况下是不可见的),评估DOM的状态并在JS运行之前通过testing失败。 是的,我在包含describe块中设置:js => true 🙂 任何想法将不胜感激! 我希望我不必在这里有意拖延,这种感觉会很脆弱,会让事情变得缓慢。