2015-06-15 13 views
5

मैं अपने प्रोजेक्ट में उपयोग किए जाने वाले प्रमाणीकरण के लिए एक सरल ई 2 टेस्ट लिखने की कोशिश कर रहा हूं, प्रमाणीकरण एक जेसन वेब टोकन पर आधारित है जो window.localStorage.satellizer_token में सेट है।प्रोटैक्टर परीक्षण विंडो ऑब्जेक्ट गुणों का परीक्षण, उपयोग और संशोधन

इसे सेट करने के लिए मैं नीचे दिए गए कोड का उपयोग करता हूं, लेकिन जो कुछ मैं देखता हूं, वह वास्तव में विंडो ऑब्जेक्ट की वास्तविक स्थानीय स्टोरेज प्रॉपर्टी सेट नहीं करता है।

describe('login', function() { 
it('should set the satellizer token and be allowed to get panel', function() { 
    browser.driver.get('http://example.com/'); 
    browser.driver.executeScript(function() { 
     return window.localStorage; 
    }).then(function (localStorage) { 
     expect(localStorage.satellizer_token).toBe(undefined); 
     localStorage.satellizer_token = "eyJ0fdaccKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6IjE3MjUzIiwiaWF0IjoxNDM0Mzc1NjU3LCJleHAiOjE0NjU5Mjk2NTd9.VbhdWQ_gOb7X8pmOGLDjBKURxcaWQlIXQGvLRansQCphk"; 
     expect(localStorage.satellizer_token).toBe("eyJ0fdaccKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6IjE3MjUzIiwiaWF0IjoxNDM0Mzc1NjU3LCJleHAiOjE0NjU5Mjk2NTd9.VbhdWQ_gOb7X8pmOGLDjBKURxcaWQlIXQGvLRansQCphk"); 
     browser.driver.get('http://example.com/panel'); 
     expect(browser.driver.getTitle()).toEqual('http://example.com/panel'); 
     expect(browser.driver.getCurrentUrl()).toEqual('http://example.com/panel'); 
    }); 
}); 

});

मुझे पता है कि पहले से ही कुछ ऐसा ही है here और here लेकिन सभी उदाहरण जो मैं पा सकते हैं केवल एक्सेस के बारे में हैं, मुझे विंडो गुणों को संशोधित करने की भी आवश्यकता है।

प्रोटैक्टर परीक्षणों में विंडो ऑब्जेक्ट के साथ संवाद करने का सही तरीका क्या है?

उत्तर

4

कार्य समाधान:

browser.executeScript(function() { 
     window.localStorage.satellizer_token = "eyJ0eXAiOiJKV1QiLCJhbGasdsOiJIUzI1NiJ9.eyJpZCI6IjE3MjUzIiwiaWF0IjoxNDM0Mzc1NjU3LCJleHAiOjE0NjU5Mjk2NTd9.VbhdWQ_gOb7X8pmOGLDjBKURQUQlcAfGSGvLRansQCphk"; 
    }); 
0
+0

यह लग रहा है खिड़की विधि केवल खिड़की वस्तु के साथ बातचीत करने के लिए पूर्वनिर्धारित तरीकों का एक सेट है, लेकिन यह 'नहीं करता है क्या के लिए मुझे नई संपत्तियों को सेट करने की अनुमति नहीं है। – pietrovismara

+1

सटीक। क्योंकि यह जो देता है वह एक इंटरफ़ेस है, जिसे निम्नानुसार परिभाषित किया गया है: http://angular.github.io/protractor/#/api?view=webdriver.WebDriver.Window। यदि आप विंडो ऑब्जेक्ट को एक कस्टम तरीके से प्रबंधित करना चाहते हैं तो मैं कहूंगा कि यह ठीक है कि आप अभी कैसे कर रहे हैं। मैं आपको निष्पादन स्क्रिप्ट के बाहर कॉलबैक अज्ञात फ़ंक्शन घोषित करने की सलाह दूंगा, ताकि इसे बेहतर तरीके से पुन: उपयोग करने में सक्षम हो सके, जैसे: 'var localStorageSetter = function() { window.localStorage.satellizer_token = 'जो भी'; } browser.executeScript (localStorageSetter); ' –

संबंधित मुद्दे