ruby on rails 3 - matchers - Controlador anónimo en Minitest w/Rails
rspec rails 5 (2)
No creo que los controladores anónimos sean compatibles. En lugar de usar un DSL para crear un controlador, intente definir un controlador en su prueba.
class SlugTestController < ApplicationController
def index
render nothing: true
end
end
describe SlugTestController do
it "should catch bad slugs" do
get :index, slug: "bad%20slug"
response.code.must_equal "403"
end
end
Al convertir de RSpec a Minitest me encontré con un pequeño problema que Google no me ayudó con un solo paso, y eso es averiguar cómo hacer algo como esto:
describe ApplicationController do
controller do
def index
render nothing: true
end
end
it "should catch bad slugs" do
get :index, slug: "bad%20slug"
response.code.should eq("403")
end
end
con Minitest. ¿Hay alguna manera de crear controladores anónimos como este dentro de Minitest o hay documentación que pueda ayudarme a aprender a probar los controladores con minitest?
Puedes hacer algo como eso:
# Add at runtime an action to ApplicationController
ApplicationController.class_eval do
def any_action
render :nothing
end
end
# If disable_clear_and_finalize is set to true, Rails will not clear other routes when calling again the draw method. Look at the source code at: http://apidock.com/rails/v4.0.2/ActionDispatch/Routing/RouteSet/draw
Rails.application.routes.disable_clear_and_finalize = true
# Create a new route for our new action
Rails.application.routes.draw do
get ''any_action'' => ''application#any_action''
end
# Test
class ApplicationControllerTest < ActionController::TestCase
should ''do something'' do
get :any_action
assert ''something''
end
end