ใช้rspec-context-private gemเพื่อทำให้เมธอดส่วนตัวเป็นสาธารณะชั่วคราวภายในบริบท
gem 'rspec-context-private'
ทำงานโดยการเพิ่มบริบทที่ใช้ร่วมกันในโครงการของคุณ
RSpec.shared_context 'private', private: true do
before :all do
described_class.class_eval do
@original_private_instance_methods = private_instance_methods
public *@original_private_instance_methods
end
end
after :all do
described_class.class_eval do
private *@original_private_instance_methods
end
end
end
จากนั้นหากคุณส่ง:private
เป็นข้อมูลเมตาไปยังdescribe
บล็อกเมธอดส่วนตัวจะเป็นแบบสาธารณะภายในบริบทนั้น
describe AccountController, :private do
it 'can test private methods' do
expect{subject.current_account}.not_to raise_error
end
end