2017-02-09 2 views
0

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 sie
extend 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.

+1

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. –

+0

@ 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. –

Antwort

0

Dank @ MarkoAvlijaš (siehe Kommentar zum Beitrag) hatte das Problem offenbar die explizite Anforderung sowie die Include-Anweisung.

Sobald diese entfernt wurden, wurde die Spezifikationsdatei ohne Fehler ausgeführt.

Verwandte Themen