क्या ऐसा करने का कोई अच्छा तरीका है? मैं एक ऐसा एक्सटेंशन लिख रहा हूं जो एक वेबसाइट के साथ एक सामग्री स्क्रिप्ट के रूप में बातचीत करता है और स्थानीय स्टोरेज का उपयोग कर डेटा बचाता है। क्या कोई उपकरण, ढांचे, आदि हैं जिनका उपयोग मैं इस व्यवहार का परीक्षण करने के लिए कर सकता हूं? मुझे पता है कि जावास्क्रिप्ट का परीक्षण करने के लिए कुछ सामान्य उपकरण हैं, लेकिन क्या वे एक्सटेंशन का परीक्षण करने के लिए पर्याप्त शक्ति हैं? यूनिट परीक्षण सबसे महत्वपूर्ण है, लेकिन मुझे अन्य प्रकार के परीक्षण (जैसे एकीकरण परीक्षण) में भी रूचि है।क्रोम एक्सटेंशन का परीक्षण कैसे करें?
उत्तर
हाँ, मौजूदा व्यवस्थाएं बहुत उपयोगी होते हैं ..
हाल ही में, मैं एक "परीक्षण" पेज कि आवेदन करने के लिए में एम्बेडेड था, लेकिन नहीं पहुंचा जा सकता जब तक कि शारीरिक रूप से आपके द्वारा लिखा गया पर मेरे सभी परीक्षणों रखा है।
उदाहरण के लिए, मैं chrome-extension://asdasdasdasdad/unittests.html
के तहत एक पेज सुलभ में सभी परीक्षणों है, परीक्षण सामग्री स्क्रिप्ट तक पहुँचने के लिए localStorage
आदि के लिए उपयोग किया जाएगा सिद्धांत रूप में आप अपने परीक्षण पृष्ठ में एम्बेडेड iframes के माध्यम से है कि परीक्षण कर सकते हैं हालांकि, ये अधिक एकीकरण स्तर परीक्षण हैं, यूनिट परीक्षणों के लिए आपको वास्तविक पृष्ठों से दूर अमूर्त करने की आवश्यकता होगी ताकि आप उन पर निर्भर न हों, इसी तरह स्थानीय स्टोरेज तक पहुंच के साथ।
यदि आप सीधे पृष्ठों का परीक्षण करना चाहते हैं, तो आप अपने टैब को नए टैब खोलने के लिए ऑर्केस्ट्रेट कर सकते हैं (chrome.tab.create ({"url": "someurl"})। प्रत्येक नए टैब के लिए आपकी सामग्री स्क्रिप्ट चलनी चाहिए और आप पहले से ही क्रोम में उपकरण मौजूदा बारे में जाँच करने के लिए अपने कोड किया है कि यह क्या करना चाहिए अपने परीक्षण ढांचे का उपयोग कर सकते
चौखटे का सवाल है, JsUnit या अधिक हाल ही में Jasmine ठीक काम करना चाहिए
आप सही हैं, वास्तविक पृष्ठों का परीक्षण यूनिट परीक्षण के अंतर्गत नहीं आता है। मुझे अपना प्रश्न अधिक व्यापक बनाना चाहिए था। लेकिन यह अभी भी कुछ है जो मैं परीक्षण करना चाहता हूं, खासकर जब वेबसाइट एचटीएमएल संरचना किसी भी समय बदल सकती है। मैंने सवाल संशोधित कर दिया है। – swampsjohn
मैं अभी भी आपके यूनिट टेस्ट पेज में IFrames के माध्यम से परीक्षण करूंगा। सामग्री स्क्रिप्ट को अभी भी आग लगनी चाहिए (यदि आप आईफ्रेम में स्क्रिप्ट को चलाने के लिए सक्षम करते हैं) – Kinlan
प्रॉक्सी नमूना एक्सटेंशन में कुछ परीक्षण हैं जो केवल आवश्यक बिट्स और क्रोम एपीआई के टुकड़ों को मजाक करते हैं: http://code.google। कॉम/क्रोम/एक्सटेंशन/samples.html # chrome.proxy .. इसके अलावा हमारे सहयोगी बोरिस ने अपने "मॉडल" परत का परीक्षण करने के लिए क्विनीट का उपयोग किया: https://github.com/borismus/Question-Monitor-for-Stack-Exchange/ पेड़/मास्टर/परीक्षण –
:।।
सी में हार्म डेवलपर टूल, संसाधनों के लिए स्थानीय भंडारण के लिए अनुभाग है।
डेवलपर टूल> संसाधन> स्थानीय संग्रह
वहाँ LocalStorage के परिवर्तन देखें।
आप प्रदर्शन का परीक्षण करने और रन टाइम कॉल स्टैक देखने के लिए console.profile का उपयोग कर सकते हैं। फाइल सिस्टम: क्रोम एक्सटेंशन: अस्थायी ////
आप उपयोग कर रहे हैं सामग्री स्क्रिप्ट और स्थानीय भंडारण
मेरे लिए काम नहीं किया, लेकिन यह मुझे मेरे जावास्क्रिप्ट में आगे ले गया। इसके लिए +1। – mobibob
फ़ाइल सिस्टम के लिए आप इसका उपयोग कर सकते हैं: फाइल सिस्टम: क्रोम-एक्सटेंशन: //
कई क्रोम एक्सटेंशन पर कार्य करना मैं sinon-chrome
परियोजना है कि mocha
, nodejs
और phantomjs
का उपयोग कर इकाई परीक्षण चलाने के लिए अनुमति देता है के साथ आया था।
मूलभूत, यह सभी chrome.* api
के साइनऑन मैक्स बनाता है जहां आप किसी भी पूर्वनिर्धारित जेसन प्रतिक्रिया डाल सकते हैं।
अगला, आप पॉपअप/विकल्प पृष्ठ प्रस्तुत करने के लिए पृष्ठभूमि पृष्ठ के लिए नोड के vm.runInNewContext
और phantomjs
का उपयोग करके अपनी स्क्रिप्ट लोड करते हैं।
और अंत में, आप जोर देते हैं कि क्रोम एपी को आवश्यक तर्कों के साथ बुलाया गया था।
के एक उदाहरण लेते हैं:
मान लें हम सरल क्रोम एक्सटेंशन है, जो बटन बिल्ला में खोले गए टैब की संख्या प्रदर्शित करता है।
पृष्ठभूमि पृष्ठ:
chrome.tabs.query({}, function(tabs) {
chrome.browserAction.setBadgeText({text: String(tabs.length)});
});
यह परीक्षण करने के लिए हम की जरूरत है:
- नकली
chrome.tabs.query
पूर्वनिर्धारित प्रतिक्रिया वापस जाने के लिए, उदाहरण के लिए दो टैब । - हमारे मज़ाक उड़ाया क्रोम * ज़ोर उस बटन बिल्ला '2'
कोड स्निपेट के बराबर
var vm = require('vm');
var fs = require('fs');
var chrome = require('sinon-chrome');
// 1. mock `chrome.tabs.query` to return predefined response
chrome.tabs.query.yields([
{id: 1, title: 'Tab 1'},
{id: 2, title: 'Tab 2'}
]);
// 2. inject our mocked chrome.* api into some environment
var context = {
chrome: chrome;
};
// 3. run our extension code in this environment
var code = fs.readFileSync('src/background.js');
vm.runInNewContext(code, context);
// 4. assert that button badge equals to '2'
sinon.assert.calledOnce(chrome.browserAction.setBadgeText);
sinon.assert.calledWithMatch(chrome.browserAction.setBadgeText, {
text: "2"
});
अब हम यह मोचा के describe..it
कार्यों में लपेट और टर्मिनल से चला सकते हैं
$ mocha
background page
✓ should display opened tabs count in button badge
1 passing (98ms)
आप पूर्ण उदाहरण here पा सकते हैं।
इसके अतिरिक्त, साइनऑन-क्रोम किसी भी क्रोम ईवेंट को पूर्वनिर्धारित प्रतिक्रिया के साथ ट्रिगर करने की अनुमति देता है, उदा।
chrome.tab.onCreated.trigger({url: 'http://google.com'});
अच्छा लगता है - मैं निश्चित रूप से इसे एक स्पिन दूंगा! – jakabadambalazs
उदाहरण के लिए लिंक मृत लगता है - क्या आप इसे अपडेट कर सकते हैं? उदाहरण के लिए – Raisen
अद्यतन लिंक। इसके अलावा साइनऑन-क्रोम अब https://github.com/acvetkov में स्थानांतरित हो गया है और जल्द ही नए उदाहरण होंगे – vitalets
sinon.js
महान काम करने के लिए लगता है, आप भी सिर्फ सादा जैस्मीन का उपयोग करें और क्रोम कॉलबैक आप की जरूरत नकली कर सकते हैं। उदाहरण:
chrome = {
runtime: {
onMessage : {
addListener : function() {}
}
}
}
describe("JSGuardian", function() {
describe("BlockCache", function() {
beforeEach(function() {
this.blockCache = new BlockCache();
});
it("should recognize added urls", function() {
this.blockCache.add("http://some.url");
expect(this.blockCache.allow("http://some.url")).toBe(false);
});
} // ... etc
बस डिफ़ॉल्ट SpecRunner.html
अपने कोड को चलाने के लिए संशोधित।
- 1. क्रोम एक्सटेंशन परीक्षण
- 2. क्रोम एक्सटेंशन कैसे होस्ट करें?
- 3. क्रोम एक्सटेंशन
- 4. क्रोम एक्सटेंशन
- 5. क्रोम एक्सटेंशन:
- 6. परीक्षण स्टूडियो एक्सटेंशन का परीक्षण
- 7. क्रोम एक्सटेंशन
- 8. क्रोम एक्सटेंशन
- 9. क्रोम एक्सटेंशन:
- 10. क्रोम एक्सटेंशन
- 11. क्रोम एक्सटेंशन
- 12. क्रोम एक्सटेंशन
- 13. क्रोम एक्सटेंशन में ऑडियो रिकॉर्ड कैसे करें?
- 14. क्रोम एक्सटेंशन
- 15. क्रोम एक्सटेंशन: क्रोम
- 16. क्रोम एक्सटेंशन
- 17. क्रोम एक्सटेंशन
- 18. क्रोम एक्सटेंशन विकल्पों को कैसे सिंक करें
- 19. क्रोम एक्सटेंशन
- 20. क्रोम एक्सटेंशन
- 21. क्रोम एक्सटेंशन
- 22. क्रोम एक्सटेंशन
- 23. क्रोम एक्सटेंशन
- 24. क्रोम एक्सटेंशन एक्सेस iframes करें?
- 25. क्रोम एक्सटेंशन
- 26. क्रोम एक्सटेंशन
- 27. क्रोम एक्सटेंशन
- 28. क्रोम एक्सटेंशन
- 29. क्रोम एक्सटेंशन
- 30. क्रोम एक्सटेंशन
मैंने अभी एक कैननिकल उत्तर लिखा है जो * सभी * ब्राउज़रों में ब्राउज़र एक्सटेंशन के लिए यूनिट परीक्षण और एकीकरण परीक्षण को संबोधित करता है, न केवल क्रोम। ["ब्राउज़र एक्सटेंशन परीक्षण" का जवाब देखें] (http://stackoverflow.com/a/17370531/938089)। –