2011-03-16 11 views
5

Siento que el código hablará más que palabras, en este caso, por lo que el lugar al código:Prueba anidado controlador de espacio de nombres con RSpec 2 y Rails3

config/routes.rb

namespace :embed do 
    namespace :v1 do 
    resources :articles 
    end 
end 

app/controllers/embed/v1/articles_controller.rb

class Embed::V1::ArticlesController < ApplicationController 
    def index 
    render :text => 'ok' 
    end 
end 

spe c/controladores/embed/v1/articles_controller_spec.rb

require File.expand_path(File.dirname(__FILE__) + '/../../../spec_helper') 

describe Embed::V1::ArticlesController do 
    it "should do something" do 
    get :new 
    end 
end 

Correr rspec spec

$ rspec spec 
F 

Failures: 

    1) Embed::V1::ArticlesController should do something 
    Failure/Error: get :new 
    AbstractController::ActionNotFound: 
     The action 'new' could not be found for Embed::V1::ArticlesController 
    # ./spec/controllers/embed/v1/articles_controller_spec.rb:5 

Finished in 0.01665 seconds 
1 example, 1 failure 

Cualquier idea de por qué es esto? ¿Hay una limitación anidada? Accediendo a la url http://0.0.0.0:3000/embed/v1/articles representa ok como se esperaba.

Respuesta

5

No tiene la acción new definida en Embed::V1::ArticlesController, solo la acción index. Está tratando de golpear la acción new en sus especificaciones con get :new.

1

Debe definir la acción de nuevo, en su código que no ha definido en el controlador de la nueva acción y pidió a rspec la nueva acción!

Cuestiones relacionadas