के साथ रूबी विरासत का परीक्षण कैसे करें मैं वर्ग विरासत के दौरान चलने वाले तर्क का परीक्षण करने की कोशिश कर रहा हूं, लेकिन कई दावों को चलाने के दौरान एक समस्या में भाग लेता हूं।rspec
मैं पहले की कोशिश की ...
describe 'self.inherited' do
before do
class Foo
def self.inherited klass; end
end
Foo.stub(:inherited)
class Bar < Foo; end
end
it 'should call self.inherited' do
# this fails if it doesn't run first
expect(Foo).to have_received(:inherited).with Bar
end
it 'should do something else' do
expect(true).to eq true
end
end
लेकिन यह विफल रहता है क्योंकि बार वर्ग पहले से ही लोड किया गया है, और इसलिए एक 2 बार फोन नहीं करता है inherited
। अगर दावा पहले नहीं चलता है ... यह विफल रहता है।
तो फिर मैं कुछ करने की कोशिश की तरह ... क्योंकि
describe 'self.inherited once' do
before do
class Foo
def self.inherited klass; end
end
Foo.stub(:inherited)
class Bar < Foo; end
end
it 'should call self.inherited' do
@tested ||= false
unless @tested
expect(Foo).to have_receive(:inherited).with Bar
@tested = true
end
end
it 'should do something else' do
expect(true).to eq true
end
end
@tested
परीक्षण से मौजूद नहीं होता परीक्षण करने के लिए, परीक्षण सिर्फ एक बार नहीं चलता है।
किसी को भी इसे पूरा करने के लिए कोई चालाक तरीका है? यह एक काल्पनिक उदाहरण है और मुझे नहीं वास्तव में ही गहरे लाल रंग का परीक्षण करने की जरूरत है;)
टेस्ट व्यवहार, नहीं कार्यान्वयन। यदि क्लास कक्षा से विरासत में प्राप्त होता है तो परीक्षण उचित होगा यदि विधि मेटा प्रोग्रामिंग सामग्री (जैसे क्लास का निर्माण और सेट एन्केस्टर्स) कर रही है तो –