Rspec-模拟模型方法

问题描述 投票:-1回答:1

我有以下方法,

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变量。

谢谢。

ruby-on-rails rspec
1个回答
0
投票

如@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

© www.soinside.com 2019 - 2024. All rights reserved.