2017-02-01 12 views
1

Ich habe eine Datei mit zwei Klassen drin.Ruby rspec Mocking eine Klasse

class LogStash::Filters::MyFilter< LogStash::Filters::Base 

und

class LogStash::JavaMysqlConnection 

JavaMysqlConnection hat Methoden "initialisieren" und "select".

JavaMysqlConnection wird von der MyFilter-Klasse verwendet und wird verwendet, um die Datenbank abzufragen, wie Sie es vielleicht schon erraten haben.

Wie verspotten ich die Methoden "initialize" und "select", um nil bzw. ein Array zurückzugeben?

Ich habe versucht, mit:

before(:each) do 
    dbl = double("LogStash::JavaMysqlConnection", :initialize => nil) 
end 

aber das hat nicht funktioniert, wie ich bin immer noch ein Kommunikationsverbindungsfehler zu sehen.

Ich habe rspec Version 2.14.8

Vielen Dank im Voraus. PS. Ich bin neu in Ruby-

Antwort

1

von Andrey Antwort Im Anschluss an die Lösung, die für mich gearbeitet wurde:

before(:each) do 
    mock_sql = double(:select=> sql_select_return) 
    allow(LogStash::JavaMysqlConnection).to receive(:new).and_return(mock_sql) 
end 
+0

'each' kann weggelassen werden – Ilya

2
allow(LogStash::JavaMysqlConnection).to receive(:new).and_return(nil) 
allow(LogStash::JavaMysqlConnection).to receive(:select).and_return([]) 

Docs

RSpec

+0

Danke, leicht bearbeitet deine Antwort anzupassen meine Situation. Siehe meine Antwort. – user98651

+0

@ user98651 froh, du hast es gelöst! –

Verwandte Themen