இத்தொடரின் முந்தைய பதிவுகளில் உள்ள எடுத்துக்காட்டுகளில் rspec-இன் அடிப்படைக்கூறுகளை (describe, it, before, after) பலவற்றை பயன்படுத்தியிருக்கிறோம். இவற்றைப்பற்றி ஓரலகு சோதனைகளின் அமைப்பு என்ற பதிவில் சுருக்கமாக அறிந்தோம். rspec-இன் மேலும் சில கூறுகளைப்பற்றி இப்பதிவில் அறிந்து கொள்வோம்.
context – சூழமைவு
ஒரு செயற்கூறு பலவேறு சூழல்களில் பலவாறு செயல்படவேண்டும் என எதிர்பார்க்கப்படுகிறது. உதாரணமாக, பல பயனர்களைக்கொண்ட ஒரு வலைதளத்தை எடுத்துக்கொள்ளலாம். அதில், ஒரு குறிப்பிட்ட பகுதி, உள்நுழைந்துள்ள, சிறப்பு அதிகாரம் பெற்ற பயனர்களுக்கு மட்டுமே வழங்கப்படவேண்டும். இங்கே சோதிப்பதற்கு மூன்று சூழமைவுகள் உள்ளன.
1) எந்த பயனரும் உள்நுழையாதிருக்கும்பொழுது.
2) சிறப்பு அதிகாரம் பெறாத பயனர் உள்நுழைந்திருக்கும்பொழுது.
3) சிறப்பு அதிகாரம் பெற்ற பயனர் உள்நுழைந்திருக்கும்பொழுது.
இதற்கான சோதனைகளை எழுத context-ஐப்பயன்படுத்தலாம்.
describe TopSecretPage do context 'with anonymous user' do it 'should not be shown' end context 'with unauthorized user' do it 'should not be shown' end context 'with authorized user' do it 'should be shown' end end
context செயற்கூற்றில் கொடுக்கப்படும் சரம் “with” அல்லது “when” என்ற வார்தைகளில் துவங்குவது பரவலாக பின்படுத்தப்படும் வழக்கமாகும்.
xit – நிலுவையிலுருக்கும் சோதனைகள்
நிரலாக்கத்தின்பொழுது, பல்வேறு காரணங்களுக்காக, ஒரு சோதனையை நிலுவையில் வைக்கவேண்டியிருக்கும். அதற்கு ‘xit’ என்ற செயற்கூற்றினை பயன்படுத்தலாம்.
describe WorkInProgress do it 'is a test for a complete functionality' xit 'is a pending functionality' end
ஒரு சோதனையை நிலுவையில் வைப்பது, அதை comment செய்வதை விட சற்று சிறந்த வழக்கம். comment செய்யப்பட்ட சோதனை குறித்து நமக்கு எவ்வித அறிவிப்பும் இருப்பதில்லை. ஆனால், நிலுவையிலிருக்கும் சோதனைகள் ஒவ்வொரு சோதனையோட்டத்தின்பொழுதும் அறிவிக்கப்படும். மேலும், சோதனைகள் நிலுவையிலிருப்பது தற்காலிகமானதாக இருக்கவேண்டும். நிரலர்கள் இவற்றை முன்னிலைப்படுத்தி சரிசெய்யவேண்டும்.
let
ஒன்றுக்கு மேற்பட்ட சோதனைகளில் ஒரு மாறி பயன்படுகிறதெனில், அதை ‘let’ செயற்கூறு கொண்டு ஒரு முறை மட்டும் வரையறுத்து பல சோதனைகளில் பயன்படுத்திக்கொள்ளலாம்.
எடுத்துக்காட்டாக,
describe MathTest do it 'depends on a vairable' do four = 4 expect(2 * 2).to be(four) end it 'also depends on the same variable' do four = 4 expect(2+2).to be(four) end end
இந்த எடுத்துக்காட்டில், four என்ற மாறி, இரண்டு சோதனைகளிலும் பயன்படுகிறது. எனவே, இதை இருமுறை வரையறுப்பதற்குப்பதிலாக, ‘let’ செயற்கூறு கொண்டு ஒரு முறை மட்டும் வரையறுக்கலாம்.
describe MathTest do let(:four) { 4 } it 'depends on a variable' do expect(2*2).to be(four) end it 'also depends on the same variable' do expect(2+2).to be(four end end
இதனால் பிரதிகளை (duplication) நாம் தவிர்க்கலாம்.