8
मेरे परीक्षणों में मुझे यह जांचने की आवश्यकता है कि सभी अपेक्षित मान एक चयन बॉक्स में मौजूद हैं या नहीं। मुझे थोड़ी देर लग गई लेकिन मैंने अंततः इस सहायक समारोह को बनाया:प्रोटैक्टर को सभी चुनिंदा बॉक्स (विकल्प) मान प्राप्त होते हैं
function getSelectValues(elementFinder)
{
var defer = protractor.promise.defer(),
promise = defer.promise;
elementFinder.all(by.tagName('option')).then(function(elements)
{
var values = [],
elemCount = elements.length,
counter = 0;
elements.forEach(function(element)
{
element.getAttribute('value').then(function(optionValue)
{
counter += 1;
values.push(optionValue);
if(counter === elemCount)
{
defer.fulfill(values);
}
});
})
});
return promise;
}
यह काम करता है लेकिन वास्तव में मुझे बदसूरत लग रहा है। इसे करने का कोई बेहतर तरीका है?
संपादित करें:
प्रलेखन पढ़ने का एक और दो घंटे के बाद मैं अपने सहायक समारोह करने के लिए कम हो गया:
getSelectValues: function(elementFinder)
{
return elementFinder.all(by.tagName('option')).map(function(elem, index)
{
return elem.getAttribute('value');
});
}
profileType = element(by.model('regObj.profileType'));
expect(getSelectValues(profileType)).toEqual(['', 'aa', 'bb', 'cc']);
अच्छी तरह से किया गया! आप इसे अपने स्वयं के प्रश्न के उत्तर के रूप में जोड़ सकते हैं। –
'मेरे कोड को कैसे सुधारें' प्रश्न वास्तव में स्टैक ओवरफ्लो तरीके नहीं हैं: एस डाउनवोट नहीं होगा, अच्छा परिणाम :) – nilsK
शायद सवाल स्पष्ट रूप से यह नहीं बताता है लेकिन मैंने सोचा कि ऐसा करने का एक बेहतर तरीका होना चाहिए। कुछ विधि जो मुझे दस्तावेज या कुछ में नहीं मिला :) धन्यवाद :) – Ralphz