0
我试图测试应该/不应该被登录时看到的链接,但RSpec的是抛出以下错误:为什么在尝试使用click_button时RSpec给出“试图解锁未锁定的互斥锁”错误?
Failure/Error: before { sign_in user }
ThreadError:
Attempt to unlock a mutex which is not locked
# (eval):2:in `click_button'
# ./spec/support/utilities.rb:5:in `sign_in'
# ./spec/views/header_spec.rb:19:in `block (3 levels) in <top (required)>'
我试块看起来像这样:
describe "when signed in" do
let(:user) { FactoryGirl.create(:user) }
before { sign_in user }
it { should have_link("Sign out") }
it { should_not have_link("Sign up") }
it { should_not have_link("Log in") }
end
而我sign_in功能:
def sign_in(user)
click_link "Log in"
fill_in "username", with: user.username
fill_in "password", with: user.password
click_button "Log me in!"
cookies[:remember_token] = user.remember_token
end
我试图改变了
click_button "Log me in!"
与
find(:button, "Log me in!").click
,并导致以下错误:
Nokogiri::CSS::SyntaxError:
unexpected '!' after '[#<Nokogiri::CSS::Node:0x00000003645778 @type=:DESCENDANT_SELECTOR, @value=[#<Nokogiri::CSS::Node:0x000000036464e8 @type=:ELEMENT_NAME, @value=["Log"]>, #<Nokogiri::CSS::Node:0x000000036458b8 @type=:DESCENDANT_SELECTOR, @value=[#<Nokogiri::CSS::Node:0x00000003645f98 @type=:ELEMENT_NAME, @value=["me"]>, #<Nokogiri::CSS::Node:0x000000036459f8 @type=:ELEMENT_NAME, @value=["in"]>]>]>]'
# (eval):3:in `_racc_do_parse_c'
# (eval):3:in `do_parse'
# (eval):2:in `find'
# ./spec/support/utilities.rb:5:in `sign_in'
# ./spec/views/header_spec.rb:19:in `block (3 levels) in <top (required)>'
我然后试图用“登录我”来代替我的按钮上的文字,如果没有感叹号, 和水豚抛出ElementNotFound错误:
Failure/Error: before { sign_in user }
Capybara::ElementNotFound:
Unable to find css "Log me in"
# (eval):2:in `find'
# ./spec/support/utilities.rb:5:in `sign_in'
# ./spec/views/header_spec.rb:19:in `block (3 levels) in <top (required)>'
我还是很新的RSpec的和总的来说Rails,但到目前为止,我一直能够找到自己的方式。这一个让我完全陷入困境。
如果您注释掉'sign_in'中的最后一行,错误是否仍然发生? – 2012-07-11 05:17:08
@TanzeebKhalili评论'cookies [:remember_token] = user.remember_token'行仍然会抛出同样的错误。我尝试用'find(:button,“Log me in!”)'替换'click_button'登录我!''并导致与最后感叹号相关的非常长的Nokogiri错误。替换按钮文本只是“登录我”,没有感叹号,导致水豚错误“无法找到CSS”登录我“。 – TKGibson 2012-07-11 07:07:29
如果使用click_on而不是click_button,会出现同样的错误? – 2012-07-11 12:41:29