应该“有效” do 失败,并显示““handle_matcher”:未定义的方法“匹配?”

发布于 2024-09-18 00:56:30 字数 829 浏览 8 评论 0原文

我正在使用以下规范在 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,所以据我所知应该加载好了。

有什么建议吗?

I'm trying out 'shoulda' on top of rspec (rails 3) with the following spec:

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

and it fails with

/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)

Now my tests will run just fine when I do both

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

and

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

where the last uses Shoulda::ActiveRecord::Matchers, so to my knowledge shoulda is loaded allright.

Any suggestions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

亚希 2024-09-25 00:56:30

在 RSpec 中 should 是一个用于触发匹配器的 RSpec 方法 - 它不是 Shouldas 上下文块。为此,您可以使用 RSpecs 自己的describe

should "be true" do
  assert true
end

是 Shoulda 的 Test::Unit 基于语法,它不应该在 RSpec 示例中工作(我猜?)。只需使用您的第二个示例,它具有相同的效果和正确的语法。

In RSpec should is an RSpec method used to trigger a matcher - it is not Shouldas context block. For that, you use RSpecs own describe.

should "be true" do
  assert true
end

is Shoulda's Test::Unit based syntax, which shouldn't work in RSpec examples (I guess?). Just use your second example, which has the same effect and the right syntax.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文