Тестирование вложенного контроллера пространства имен с RSpec 2 и Rails3 - PullRequest
5 голосов
/ 16 марта 2011

Мне кажется, что в этом случае код будет говорить больше, чем слова, поэтому укажите код:

config / rout.rb

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

app / controllers / embed / v1 / article_controller.rb

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

spec / controllers / 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

Бег 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

Есть идеи, почему это так?Есть ли вложенное ограничение?При обращении к URL http://0.0.0.0:3000/embed/v1/articles отображается ok , как и ожидалось.

Ответы [ 2 ]

5 голосов
/ 16 марта 2011

У вас нет действия new, определенного в Embed::V1::ArticlesController, только действие index. Вы пытаетесь поразить действие new в своих спецификациях с get :new.

1 голос
/ 16 марта 2011

Вы должны определить действие new, в вашем коде вы не определили в контроллере новое действие и вызвали rspec для нового действия!

...