gpt4 book ai didi

ruby-on-rails - Rspec NoMethodError : undefined method `call' , 但一切都通过 rails 控制台工作

转载 作者:数据小太阳 更新时间:2023-10-29 07:42:38 25 4
gpt4 key购买 nike

我是一个正在努力学习的 rails/rspec 新手。我设置了以下数据模型(摘录)

t.string :foo
t.string :bar
t.date :future_date

我有一个 Web 表单来创建这些与用户关联的条目,类似于此 rails tutorial 中的微博. Web 表单如下所示(摘录):

<%= f.label :foo %>
<%= f.text_field :foo %>
<%= f.label :bar %>
<%= f.text_field :bar %>
<%= f.date_select :future_date %>

带有启动帖子的“创建”按钮。通过 rails console 似乎一切正常; Web 表单显示正确,条目创建正确,数据库正确填充。但是,当我运行 rspec 时,我得到了

NoMethodError:
undefined method `call' for #<RSpec::Expectations::ExpectationTarget:0x0000000492b7c0>

这是相关的请求规范(摘录):

it "should not create a foobar" do
expect { click_button "Create" }.should_not change(Foobar, :count)
end

换句话说,在没有填写信息的情况下单击“创建”。稍后我有一个类似的示例,其中填写了信息,但几乎相同的 click_button 也会引发此错误(应该更改 .by(1))。我有类似的 click_button 测试适用于用户创建部分(没有/输入任何内容),除了 future_date 之外,它非常相似。那,再加上我在无休止的谷歌搜索中遇到的一些事情,让我相信日期是某种原因,也许是版本不一致之类的。特别是因为在实际使用中一切正常。这是 ruby​​ 1.9.3、Rails 3.2.6 和 Rspec 2.11.1。非常感谢任何见解。

最佳答案

在 RSpec >= 2.11 中你应该使用 to 方法而不是 should

expect { click_button "Create" }.to_not change(Foobar, :count)

关于ruby-on-rails - Rspec NoMethodError : undefined method `call' , 但一切都通过 rails 控制台工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11732981/

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