所以,我在课堂上有一个方法如下:
def installation_backlog
Api::Dashboards::InstallationsBacklog.new(operational_district_id, officer_id).backlog_tasks
end
我想说明一下。所以,我刚刚写了一个RSpec测试来测试它如下:
it "should call a new instance of InstallationsBacklog with the backlog_tasks method" do
expect_any_instance_of(Api::Dashboards::InstallationsBacklog).to receive(:backlog_tasks)
@installation_officer.installation_backlog # @installation_officer is a new instance of the container class.
end
这是有效的。
然而,我开始怀疑这是否是一种正确的做法。喜欢:我确定即使我存在错误(可能不存在)的方法,并测试它,它会通过还是失败?
我试过了,它通过了
因此,如果稍后更改方法名称,则此测试无法检测到该方法。
所以,问题是:我怎样才能确定代码中实际存在RSpec存根方法?
答案 0 :(得分:1)
以下是我如何设置它的方法。可能会帮助..
let(:backlog) {
double('Backlog', backlog_tasks: [])
}
before do
allow(Api::Dashboards::InstallationsBacklog).to receive(:new).
and_return(backlog)
end
it 'instantiates InstallationBacklog' do
expect(Api::Dashboards::InstallationBacklog).to receive(:new).
with(operational_district_id, officer_id)
@installation_officer.installation_backlog
end
it 'calls backlog_tasks on instance of InstallationBacklog' do
expect(backlog).to receive(:backlog_tasks)
@installation_officer.installation_backlog
end