Próbuję użyć rspec do przetestowania filtr, który mam w moim ApplicationController.Testowanie aplikacjiController Filters, Rails
W spec/controllers/application_controller_spec.rb
mam:
require 'spec_helper'
describe ApplicationController do
it 'removes the flash after xhr requests' do
controller.stub!(:ajaxaction).and_return(flash[:notice]='FLASHNOTICE')
controller.stub!(:regularaction).and_return()
xhr :get, :ajaxaction
flash[:notice].should == 'FLASHNOTICE'
get :regularaction
flash[:notice].should be_nil
end
end
Moim zamiarem było dla testu wyśmiewać akcję ajax, który ustawia lampę błyskową, a następnie sprawdzić na następny wniosek, że lampa została wyczyszczona.
Dostaję błąd routingu:
Failure/Error: xhr :get, :ajaxaction
ActionController::RoutingError:
No route matches {:controller=>"application", :action=>"ajaxaction"}
Jednak Spodziewam się, że istnieje wiele rzeczy źle z tym, jak próbuję to sprawdzić.
Dla porównania filtr jest nazywany w ApplicationController
jak:
after_filter :no_xhr_flashes
def no_xhr_flashes
flash.discard if request.xhr?
end
Jak utworzyć mock metod na ApplicationController
przetestować szeroki filtr aplikacji?