RSpec匹配器不工作(期望不支持)

时间:2017-02-09 13:39:46

标签: ruby rspec

我已经研究了这个,我读过的每件事都说以下应该有效:

require 'spec_helper'
require 'rspec/expectations'
include RSpec::Matchers

RSpec.describe 'Posts' do
  it 'should return 200 response when getting posts' do
    result_posts = RestClient.get('http://jsonplaceholder.typicode.com/posts')
    expect(result_posts.code).to eq(200)
  end
end

我在json_spec.rb目录中的文件(spec)中有。这是使用RSpec 3.5.4。

运行此规范时收到的消息是:

only the `receive`, `have_received` and `receive_messages` matchers
are supported with `expect(...).to`, but you have provided: 
#<RSpec::Matchers::BuiltIn::Eq:0x007f9b43590f48>

一篇文章建议我应该使用

extend RSpec::Matchers
而不是试图“包括”他们。我这样做了,出现了完全相同的错误。

另一篇文章建议我不再需要“rspec /期望”,而只需要“rspec”。这也行不通。 (当然,另一篇文章恰恰相反。但至少我在那里覆盖了我的基地。)

另一篇文章建议包含(或者可能是扩展,甚至两者)必须进入RSpec配置块,如下:

RSpec.configure do |config|
  include RSpec::Matchers
end

然而,这也行不通。

您在上面看到的就是我在spec目录中的所有内容。我的spec_helper.rb文件最初只包含require语句和include指令。我将它们移动到实际的spec文件(如上所示),看看是不是问题。

我没有使用Rails或Cucumber,据我所知,没有更广泛的背景,我可以或应该包括匹配器。

我必须假设我在这里遗漏了一些相当基本的东西,但RSpec文档都没有关于这个特定问题的路线图。

2 个答案:

答案 0 :(得分:0)

感谢@MarkoAvlijaš(见帖子评论),问题显然是明确的要求以及包含声明。

删除后,spec文件执行时没有问题。

答案 1 :(得分:0)

我必须从spec_helper.rb中删除此行:config.expect_with(:rspec) { |c| c.syntax = :should }