无法通过测试助手找到 css best_in_place

Unable to find css best_in_place with test helpers

我正在努力做到最好 test helpers 在我的应用程序中工作。我在用 水豚与 Test::Unit 我写了一个这样的测试。

class CompaniesTest < ActionDispatch::IntegrationTest
  include BestInPlace::TestHelpers

  def setup
    @company = companies(:public)
  end

  test "should have best in place fields on show" do
    get company_path(@company)
    assert_response :success
    assert_match @company.name, response.body
    bip_text( @company, :name, "new name" )
  end 
end

我收到这样的错误

Capybara::ElementNotFound: Unable to find css "#best_in_place_company_1001664029_name"

我尝试在 bip_text 之前添加一个 sleep(0.5) 以查看它是否是一个时间问题这并没有改变错误。

编辑:

<span data-bip-type="input"
 data-bip-attribute="name"  
 data-bip-object="company" 
 data-bip-original-content="Lightbulbs Corp." 
 data-bip-skip-blur="false" 
 data-bip-url="/companies/1001664029" 
 data-bip-value="Lightbulbs Corp." 
 class="best_in_place" 
 id="best_in_place_company_1001664029_name">Lightbulbs Corp.</span>

这是测试环境中页面的 css 元素的样子。看来id是对的。任何帮助将不胜感激。

我刚刚重读了您的问题,发现您正在使用 get。这不是 Capybara 方法,您不能混合使用这两种不同的 API 并期望一切正常。要使用 Capybara 实现您正在做的事情,它会像

test "should have best in place fields on show" do
  visit company_path(@company)
  assert_text @company.name
  bip_text( @company, :name, "new name" )
end