2017-01-21 7 views
5

मैं निम्नलिखित कोड के साथ की कोशिश की है का उपयोग कर प्रतिक्रिया:मॉक एक ज़िप लाने-नकली

require('isomorphic-fetch'); 

const fetchMock = require('fetch-mock'), 
    fsp = require('fs-promise'), 
    unzip = require('unzip'), 
    rimraf = require('rimraf-then'), 
    path = require('path'); 

let zipLink = 'https://github.com/stevemao/left-pad/archive/master.zip', 
    out = 'left-pad-master'; 

// Careful: lib might be removed at any moment. 
fetchMock.get(zipLink, 
    fsp.createReadStream(path.join(__dirname, 'left-pad-master.zip'))); 

rimraf(out) 
    .then(() => fetch(zipLink)) 
    .then(response => { 
     return new Promise((resolve, reject) => { 
      // For example purpose, just parse zip file, and log each entry. 
      response.body.pipe(unzip.Parse()) 
       .on('entry', (entry) => console.log(entry.path)) 
       .on('close', resolve) 
       .on('error', reject); 
     }); 
    }) 
    .then(() => console.log('done')) 
    .catch(console.log); 

लेकिन यह फेंकता है:

Error: invalid signature: 0x725f227b 
    at C:\dev\unzip-mock\node_modules\unzip\lib\parse.js:59:13 
    at runCallback (timers.js:628:20) 
    at tryOnImmediate (timers.js:601:5) 
    at processImmediate [as _immediateCallback] (timers.js:578:5) 

तुम बाहर टिप्पणी fetchMock.get कॉल, और एक वास्तविक fetch के साथ काम करते हैं यह अच्छा काम करता है।

कोड fetchMock.get() करने के लिए एक दूसरा पैरामीटर जहां प्रतिक्रिया ऑब्जेक्ट के शरीर स्थानीय फाइल की एक धारा है के रूप में Response का एक उदाहरण दर्रा https://github.com/mlewand/unzip-mock-example

उत्तर

4

पर उपलब्ध है:

require('isomorphic-fetch'); 

const fetchMock = require('fetch-mock'), 
    fsp = require('fs-promise'), 
    unzip = require('unzip'), 
    rimraf = require('rimraf-then'), 
    path = require('path'); 

let zipLink = 'https://github.com/stevemao/left-pad/archive/master.zip', 
    out = 'left-pad-master'; 

// Careful: lib might be removed at any moment. 
var resp = new Response(
    fsp.createReadStream(path.join(__dirname, 'left-pad-master.zip')), 
    { headers: { "Content-Type" : "application/zip" } } 
); 
fetchMock.get(zipLink, resp); 

rimraf(out) 
    .then(() => fetch(zipLink)) 
    .then(response => { 
     return new Promise((resolve, reject) => { 
      // For example purpose, just parse zip file, and log each entry. 
      response.body.pipe(unzip.Parse()) 
       .on('entry', (entry) => console.log(entry.path)) 
       .on('close', resolve) 
       .on('error', reject); 
     }); 
    }) 
    .then(() => console.log('done')) 
    .catch(console.log); 
+0

बढ़िया है, कि मैं क्या याद आ रही थी है । उत्तर के लिए बहुत बहुत धन्यवाद! –