给定两个类,Superclass
并且Subclass
-
如何allow
在超类上使用 an 返回不同的东西?
#=> given `rspec` is in your $LOAD_PATH, this should be an SSCCE
require 'rspec'
class Superclass
def superclass_method
true
end
end
class Subclass < Superclass
def subclass_method
superclass_method
end
end
descriptor = RSpec.describe Subclass do
describe '#subclass_method' do
subject(:subclass) { described_class.new }
let(:superclass) { spy('superclass') }
before do
stub_const('Superclass', superclass)
allow(superclass).to receive(:superclass_method).and_return false
end
it 'should return false' do
expect(subclass.subclass_method).to eq(false)
end
end
end
p descriptor.run
p descriptor.run
上述代码的返回输出false
(即测试失败),而true
当我将期望更改为expect(subclass.subclass_method).to eq(true)
.
我觉得我在这里错过了一些简单的东西。
我做了一些调试,我看到了一些东西:
subclass.subclass_method #=> true
subclass.superclass_method #=> true
superclass.superclass_method #=> false
我看到这里的第三行很好,但是我不确定从子类调用时如何返回它