【问题标题】:RSpec Controller Test for JavaScript ResponseJavaScript 响应的 RSpec 控制器测试
【发布时间】:2012-10-04 22:58:58
【问题描述】:

我有一个应该只响应 AJAX 调用的控制器操作:

def archive
  @model = MyEngine::MyModel.find(params[:id])
  if @model.update_attributes(params[:model])
    @success = true
  else
    @success = false
  end
  respond_to do |format|
    format.js
  end
end

我想用类似的东西来测试一下:

it "should respond with javascript" do
  xhr :post, :archive, {:id => @model.to_param, :use_route => :my_engine}, valid_session
  response.should render_template('asi/events/archive', :format => 'js')
end

it "should not respond with html" do
  xhr :post, :archive, {:id => @event1.to_param, :use_route => :asi}, valid_session
  response.should_not render_template('asi/events/archive', :format => 'html')
end

但似乎断言主要与渲染“存档”模板有关,并不关心它的扩展。如果有更好的方法来规范这个,有什么想法我做错了吗?

感谢收看!

【问题讨论】:

    标签: ruby-on-rails ajax rspec


    【解决方案1】:

    试试

    response.should_not render_template 'asi/events/archive.html'
    

    另外,你可以稍微重构你的模型

    @success = @model.update_attributes(params[:model])
    

    @success = @model.update_attributes(params[:model]) === true
    

    【讨论】:

    • 感谢您的建议,但这不起作用。规范仍然只关心文件名。也感谢重构提示!
    • 我不确定 Stack Overflow 协议对于回答但不是真的问题是什么。所以我会接受这个答案。感谢您提出建议!
    猜你喜欢
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多