使用RSpec 2和Rails3测试嵌套的命名空间控制器

时间:2011-03-16 14:00:36

标签: ruby-on-rails-3 routing controller rspec

我觉得在这种情况下代码说的不仅仅是单词,所以放在代码中:

配置/ routes.rb中

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

应用/控制器/嵌入/ V1 / articles_controller.rb

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

规格/控制器/嵌入/ 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

知道为什么会这样吗?有嵌套限制吗? 访问网址 http://0.0.0.0:3000/embed/v1/articles 按预期呈现确定

2 个答案:

答案 0 :(得分:5)

您没有new中定义的Embed::V1::ArticlesController操作,只有index操作。您正尝试使用new点击规范中的get :new操作。

答案 1 :(得分:1)

您应该在您的代码中定义动作new,在控制器中没有定义新动作,并在rspec上调用新动作!