2017-02-01 13 views
1

나는 두 개의 클래스가있는 파일이 있습니다.루비 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. 루비 안드레이의 반응에 이어

답변

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 다행, 해결했습니다! –