我正在关注“使用Rails进行敏捷Web开发”第四版中的示例。我在第11.5节测试Ajax更改。
开发: Ubuntu 11.10 RVM | ruby 1.9.3 | rails 3.1
这是一个奇怪的错误: test_should_create_line_item_via_ajax(LineItemsControllerTest): NoMethodError:未定义的方法`assert_select_rjs'
这是来自line_items_controller_test.rb的代码
test "should create line_item via ajax" do
assert_difference('LineItem.count') do
xhr :post, :create, :product_id => products(:ruby).id
end
assert_response :success
assert_select_rjs :replace_html, 'cart' do
assert_select 'tr#current_item td', /Programming Ruby 1.9/
end
end
答案 0 :(得分:2)
这本书正在使用旧版本的Rails。
请参阅assert_select_rjs的文档。在顶部,它说:
弃用或移动方法
此方法已弃用或已移至 最新稳定版。显示了最后一个现有版本(v2.3.8) 这里。
RJS
一般在Rails 3中的工作方式非常不同。请参见此处:http://weblog.rubyonrails.org/2011/4/21/jquery-new-default
此方法现已在ActionDispatch
:http://apidock.com/rails/v3.0.9/ActionDispatch/Assertions/SelectorAssertions/assert_select_rjs
答案 1 :(得分:0)
assert_select_rjs
为deprecated,但仍然是ActionDispatch的一部分。