shoulda应该“有效”用“'handle_matcher'失败:未定义的方法'匹配?'”

时间:2010-09-09 14:17:06

标签: ruby-on-rails ruby-on-rails-3 rspec shoulda

我正在尝试使用以下规范在rspec(rails 3)之上'shoulda':

require 'spec_helper'
describe Article do
  should "be true" do
    assert true
  end
end

并且

失败
/Users/jeppe/.rvm/gems/ruby-1.8.7-p302/gems/rspec-expectations-2.0.0.beta.20/lib/rspec/expectations/handler.rb:11:in `handle_matcher': undefined method `matches?' for "be true":String (NoMethodError)

现在,当我同时进行测试时,我的测试运行得很好

require 'spec_helper'
describe Article do
  it "should be true" do
    assert true
  end
end

require 'spec_helper'
describe Article do
  it { should belong_to :issue }
  it { should have_and_belong_to_many :pages }
  it { should have_many :tasks }
end

最后一个使用了Shoulda :: ActiveRecord :: Matchers,所以据我所知,shoulda已经加载了。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

在RSpec should中是用于触发匹配器的RSpec方法 - 它不是Shouldas上下文块。为此,您使用RSpec拥有describe

should "be true" do
  assert true
end

是Shoulda的Test ::基于单元的语法,它不适用于RSpec示例(我猜?)。只需使用您的第二个示例,它具有相同的效果和正确的语法。