2012-10-04 55 views
2

我有一個控制器的動作應該只AJAX迴應稱:RSpec的控制器測試JavaScript的響應

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 

但似乎斷言主要是關於渲染'檔案'模板,並不關心我t的延伸。任何想法如果有更好的方法來說明這一點,我做錯了什麼?

感謝您的期待!

回答

-3

嘗試

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

也,你可以重構你的模型一點點做

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

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

謝謝你的建議,但沒有奏效。規格仍然只關心文件名。還要感謝重構提示! –

+0

我不確定Stack Overflow協議對於回答的問題是什麼,但不是真的。所以我會接受這個答案。感謝您提出建議! –