ich das recherchiert und alles, was ich gelesen habe, sagt, dass die folgenden funktionieren sollte:RSpec Matchers funktioniert nicht (Expect nicht unterstützt)
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
Ich habe, dass in der Datei (json_spec.rb
) in meinem spec
Verzeichnis. Dies verwendet RSpec 3.5.4.
Die Nachricht empfangen wird, wenn diese Spezifikation ausgeführt ist:
only the `receive`, `have_received` and `receive_messages` matchers
are supported with `expect(...).to`, but you have provided:
#<RSpec::Matchers::BuiltIn::Eq:0x007f9b43590f48>
Ein Beitrag vorgeschlagen, dass ich
verwenden sollten sieextend RSpec::Matchers
anstatt zu versuchen, zu „schließen“. Ich tat das und der genau gleiche Fehler erscheint.
Noch ein weiterer Beitrag vorgeschlagen, ich sollte nicht mehr "RSpec/Erwartungen", sondern nur "RSPEC" erfordern. Das funktioniert auch nicht. (Noch eine andere Post sagte natürlich das genaue Gegenteil. Aber zumindest bedeckte ich meine Basen dort.)
Ein anderer Beitrag schlug vor, dass die Include (oder vielleicht die Erweiterung oder vielleicht auch beide) in einen RSpec configure Block gehen musste , als solche:
RSpec.configure do |config|
include RSpec::Matchers
end
Das funktioniert jedoch auch nicht.
Was Sie oben sehen, ist buchstäblich alles, was ich in meinem spec
Verzeichnis habe. Meine spec_helper.rb
Datei enthielt ursprünglich nur die require-Anweisungen und die include-Direktive. Ich habe sie in die eigentliche Spezifikationsdatei verschoben (wie oben gezeigt), nur um zu sehen, ob das das Problem war.
Ich verwende nicht Rails oder Cucumber, meines Wissens gibt es keinen umfassenderen Kontext, in dem ich die Matcher einbeziehen kann oder sollte.
Ich muss davon ausgehen, dass ich hier etwas Grundlegendes vermisse, aber keine der RSpec-Dokumentationen war eine Art Roadmap für dieses spezielle Problem.
RSpec funktioniert für mich ohne die Zeilen 2 und 3. Was bekommen Sie, wenn Sie 'require' rspec/expectations' und 'include RSpec :: Matchers' entfernen? Ich vermute, das ist der Grund für deine Probleme. –
@ MarkoAvlijaš Ah, warte. Interessant. Also, wenn ich BEIDE entferne - ich habe es ursprünglich falsch gelesen und nur eins entfernt - dann scheint es zu funktionieren. –