При запуске моего теста контроллера контроллера RSpec, я получаю эту ошибку:Неопределенный метод ROUTE_NAME в тесте
NoMethodError:
undefined method `api_challenge_url' for #<Api::V1::ChallengesController:0x007f829b233460>
, которые, по сути, не маршрут, который существует. Мои маршруты файл выглядит следующим образом:
namespace :api, { format: :json, constraints: { subdomain: 'api' }, path: '/'} do
scope module: :v1, constraints: ApiConstraints.new(version: 1, default: true) do
resources :users, only: [:show, :create, :update, :destroy] do
resources :challenges, only: [:create, :show]
end
end
end
И мой тестовый контроллер выглядит следующим образом:
RSpec.describe Api::V1::ChallengesController, type: :controller do
describe "POST #create" do
context "when successfully created" do
before(:each) do
@user = FactoryGirl.create(:user)
@challenge_attributes = FactoryGirl.attributes_for(:challenge)
post :create, user_id: @user.id, challenge: @challenge_attributes, format: :json
end
it "should render the JSON for the created challenge" do
challenge_response = JSON.parse(response.body, symbolize_names: true)
expect challenge_response[:description].to eql @challenge_attributes["description"]
expect challenge_response[:title].to eql @challenge_attributes["title"]
end
end
end
end
Но для жизни меня, я не могу, почему он звонит неправильное название маршрута. Выход соответствующей части rake routes
выглядит следующим образом:
api_user_challenges POST /users/:user_id/challenges(.:format) api/v1/challenges#create {:subdomain=>"api"}
Я попробовал несколько различных форматов в методе post
, есть некоторые идиоматических способ сделать это, что я не хватает?
Я включил его, и никаких изменений не было. Я действительно запутался в том, почему он пытается использовать api_challenge_url, похоже, что он не просматривается должным образом, но я чувствую, что следую правильному шаблону. – sp33k3rph433k