我已经研究了这个,我读过的每件事都说以下应该有效:
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文档都没有关于这个特定问题的路线图。
答案 0 :(得分:0)
感谢@MarkoAvlijaš(见帖子评论),问题显然是明确的要求以及包含声明。
删除后,spec文件执行时没有问题。
答案 1 :(得分:0)
我必须从spec_helper.rb中删除此行:config.expect_with(:rspec) { |c| c.syntax = :should }