Rails路线无法使用黄瓜进行测试

时间:2017-11-26 03:44:22

标签: ruby-on-rails forms routing controllers

[你好这是我在Stackoverflow上的第一个问题所以请耐心等待,我会尽量给出尽可能详细的信息。我是编码的新手,目前正在开发一个rails应用程序,我正在建立一个讨论板。到目前为止,我已经构建了我的用户模型和讨论模型,其中讨论属于用户和用户has_many讨论。我的测试在第10行失败,New Discussion的链接似乎设置为正确的路径,当我撬开它时,它显示正确的路径。然后在第15行,当前路径在索引页面上...所以我'我不确定我的测试写得不好还是我错过了什么。我希望这与屏幕截图有足够的信息...我已经花了一天时间在这上面,我在我的智慧结束...任何帮助非常感谢谢谢。

error message rails routes

我的测试*

# A user starts a new discussion
Given("they click on the discussion link") do
click_link 'DISCUSSIONS'
end

Then("they will be redirected to the discussions index page") do
expect(current_path).to eq(user_discussions_path(@user.id))
end

   When("they click on the new discussion link") do
   click_link 'New Discussion'
   end

  Then("they will be redirected to the new discussion page") do
  expect(current_path).to eq(new_user_discussion_path(@user.id))
  end

讨论索引页面*

<div class="container">
  <div class="grid">
   <%= render 'discussions_navbar' %>
   <%= link_to "New Discussion", new_user_discussion_path %>
  </div>
</div>

在test *

的current_path上绑定Pry
[1] pry(#<Cucumber::Rails::World>)> current_path
=> "/users/1715/discussions"
[2] pry(#<Cucumber::Rails::World>)> new_user_discussion_path(@user.id)
=> "/users/1715/discussions/new"
[3] pry(#<Cucumber::Rails::World>)> expect(current_path).to 
eq(new_user_discussion_path(@user.id))
RSpec::Expectations::ExpectationNotMetError:
expected: "/users/1715/discussions/new"
got: "/users/1715/discussions"

绑定pry on New Discussion Link *

[1] pry(#<#<Class:0x007fd3a62cf660>>)> new_user_discussion_path
=> "/users/1722/discussions/new"

错误讯息*

When they click on the new discussion link                 # features/step_definitions/discussion_steps.rb:10
      undefined method `discussions_path' for #<#<Class:0x007fd3a62cf660>:0x007fd3a6681740> (ActionView::Template::Error)
      ./app/views/discussions/_form.html.erb:1:in `_app_views_discussions__form_html_erb__787511772381390310_70273503263920'
      ./app/views/discussions/new.html.erb:4:in `_app_views_discussions_new_html_erb___371545055918840709_70273503334040'
      ./features/step_definitions/discussion_steps.rb:11:in `"they click on the new discussion link"'
      features/discussion.feature:10:in `When they click on the new discussion link'

新讨论形式*

<%= simple_form_for @discussion do |d| %>
  <%= d.input :title, label: "Discussion Title" %>
  <%= d.input :description %>
  <%= d.button :submit %>
<% end %>

路线*

user_discussions GET /users/:user_id/discussions(.:format)讨论#index

POST /users/:user_id/discussions(.:format)讨论#create        new_user_discussion GET /users/:user_id/discussions/new(.:format)讨论#new

1 个答案:

答案 0 :(得分:0)

尝试:

<%= simple_form_for [current_user, @discussion] do |d| %>