我有以下方法,
Model / Summary.rb
def show_summary
device_lastest_reading = lastest_reading
end
Model / Reading.rb
def lastest_reading
select_readings(start_date, last_date)
end
lastest_reading
方法从硬件获取值。我已经为RSPEC创建了DummyReading.rb
并按如下所示放置了lastest_reading
方法,
DummyReading.rb
def lastest_reading
{
:a=>13,
:b=>"7666",
:c=>6729690,
}
end
这是我尝试过的,
it "should return summary data" do
allow(DummyReading.lastest_reading).to receive(Model.show_summary).and_return({})
end
我在{}:Hash`中出现错误[undefined method
to_sym']
在rspec中,如何模拟/存根这个device_lastest_reading变量。
谢谢。
如@max所述,在问之前,您应该做适当的作业。首先了解模拟和存根之间的区别以及它在rspec中的工作方式。
为了获得快速帮助,应该执行以下操作。
it "should return summary data" do
allow_any_instance_of(Reading).to receive(:latest_reading).and_return(DummyReading.new.latest_reading)
end
尽管不建议使用allow_any_instance_of
。结帐style guide。