2014-09-01 4 views
0

Выполняет вызовы ping, которые обычно устанавливают network_status = true. Затем он должен вызвать подключения, если это неверно:Метод-заглушка, вызываемый другим методом

def run 
    ping 
    if @network_status == false 
    connect 
    end 
end 

Я хочу, чтобы проверить его, и я написал это:

t = Test.new 

#other tests happen inside the run method, then 

it "calls .connect" do 
    t.stub(:network_status).and_return(false) 
    t.stub(:ping).and_return(false) 
    expect(t).to receive(:connect) 
    t.run 
end 

но результат:

Failure/Error: expect(Test).to receive(:connect) 
    (<Test (class)>).connect(any args) 
     expected: 1 time with any arguments 
     received: 0 times with any arguments 

Почему?

ответ

2

@network_status - не метод. Это мгновенная переменная. Вы должны установить текущую переменную в тесте.

it "calls .connect" do 
    t.instance_variable_set(:@network_status, false) 
    t.stub(:ping).and_return(false) 
    expect(t).to receive(:connect) 
    t.run 
end 
Смежные вопросы