gpt4 book ai didi

ruby-on-rails - 使用 Cucumber 时出现方法丢失错误(使用 rails、webrat 和 mongomapper)

转载 作者:行者123 更新时间:2023-11-28 21:33:47 24 4
gpt4 key购买 nike

我正在用 Cucumber 编写一些基本步骤说明,但无法弄清楚为什么它会抛出“缺少方法”错误。这是准确的错误:

undefined method `question' for nil:NilClass (ActionView::Template::Error)

此错误的根源是我的 index.html.erb 页面中的这一行:

<p id="question"><%= @question.question %></p>

所以看起来测试认为@question 为零。我不确定为什么会这样想。我应该在我的步骤说明中更改什么?他们在这里:

Given /^a question$/ do
@question = Question.create!(:question => "here's my question..", :answer => "right_answer", :num => "1")
end

When /^I answer the question$/ do
visit root_path
fill_in "Answer", :with => "Wrong answer"
click_button "Submit answer"
end

第一步指令通过,但第二步指令未通过。


编辑:这是我的整个 index.html.erb 页面,以防有用:

<% title "Questions" %>

<p id="question"><%= @question.question %></p>

<%= form_for @user_answer do |f| %>
<div><%= f.label :answer %></div>
<div><%= f.text_field :answer %></div>
<div id="sign_up_button"><%= f.submit "Submit answer" %></div>
<% end %>

<p><%= link_to "New Question", new_question_path %></p>

编辑:我的问题模型,以防它有用:

class Question
include MongoMapper::Document

key :question, String, :required => true
key :answer, String, :required => true
key :num, String, :required => true

最佳答案

假设您正确地向我们提供了堆栈跟踪的摘录,您的问题是您没有在您的 Controller 中正确设置 @question - 您没有在上面发布。其他几个人在他们的回答中提到了这一点,但我对此深信不疑。

您的测试 - cucumber 或其他 - 与您遇到的问题无关。

我怀疑如果你访问你的 root_url,你会遇到同样的问题——你会得到一个堆栈跟踪和一个错误。在不知道您的确切路线是什么的情况下,我无法确定您在访问 root_url 时被发送到哪里。

您的 Controller 应该使用您的问题对象加载@question(可能通过Question.find() 或类似的东西),然后呈现您的index.html.erb 页面。因此,您 Controller 中的“索引”操作应该是填充您的@question 的内容。

请注意,您在这里没有遵循休息原则 - 通常人们会使用“索引”为您提供事物列表(在您的实例中为问题),然后 id 为您提供特定问题。

我敢打赌,如果你去回答一个特定的问题,它会工作得很好。

也许您的问题是您不应该首先通过访问“root_path”来进行测试?也许你应该去一个特定的“问题”路径?

关于ruby-on-rails - 使用 Cucumber 时出现方法丢失错误(使用 rails、webrat 和 mongomapper),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8407243/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com