2017-02-01 5 views
1

私は2つのクラスを持つファイルを持っています。Ruby rspecクラスを模擬する

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

class LogStash::JavaMysqlConnection 

JavaMysqlConnectionは、 "初期化" と "選択" のメソッドを持っています。

JavaMysqlConnectionは、MyFilterクラスで使用されており、推測したとおりにデータベースを照会するために使用されます。

「初期化」メソッドと「選択」メソッドをモックして、それぞれnilと配列を返すにはどうすればよいですか?

私が使用してみました:

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

が、私はまだ通信リンクの失敗を見ていて、これは、動作しませんでした。

私はRSpecのバージョン2.14.8事前に

感謝を持っています。 PS。私は、Rubyアンドレイの応答に続き

答えて

1

に新しいです、私のために働いたソリューションでした:

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

'each 'は省略できます – Ilya

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

Docs

RSpec

+0

おかげで、わずかに合うようにあなたの答えを編集しました私の状況。私の答えを見てください。 – user98651

+0

@ user98651うれしい、あなたはそれを解決しました! –