我是一个尝试学习的 rails/rspec 新手。我已经设置了以下数据模型(摘录)
t.string :foo
t.string :bar
t.date :future_date
我有一个 Web 表单来创建与用户关联的这些条目,类似于这个rails 教程中的微博。Web 表单如下所示(摘录):
<%= f.label :foo %>
<%= f.text_field :foo %>
<%= f.label :bar %>
<%= f.text_field :bar %>
<%= f.date_select :future_date %>
使用“创建”按钮启动帖子。一切似乎都可以通过 rails 控制台正常工作;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。非常感谢任何见解。