我觉得在这种情况下代码说的不仅仅是单词,所以放在代码中:
配置/ 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 按预期呈现确定。
答案 0 :(得分:5)
您没有new
中定义的Embed::V1::ArticlesController
操作,只有index
操作。您正尝试使用new
点击规范中的get :new
操作。
答案 1 :(得分:1)
您应该在您的代码中定义动作new,在控制器中没有定义新动作,并在rspec上调用新动作!