2016-08-05 39 views

Antwort

5

können Sie diese Hilfsklasse verwenden:

// File: loadDOM.js 
 

 
const jsdom = require('jsdom'); 
 

 
export default (documentLoaded) => { 
 
    
 
    // Mock Image class since it's not found by default in jsdom 
 
    global.Image = class Image { 
 
    get complete() { 
 
     return true; 
 
    } 
 
    }; 
 

 
    global.navigator = { 
 
    userAgent: 'node.js', 
 
    }; 
 

 
    jsdom.env({ 
 
    html: '<html><head></head><body></body></html>', 
 
    scripts: [ 
 
     'https://maps.googleapis.com/maps/api/js?libraries=places', 
 
     'https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js', 
 
    ], 
 
    done: (err, win) => { 
 
     global.window = win; 
 
     global.document = win.document; 
 
     global.google = win.google; 
 
     global.$ = win.jQuery; 
 

 
     // Add other common globals 
 
     Object.keys(win).forEach((property) => { 
 
     if (typeof global[property] === 'undefined') { 
 
      global[property] = win[property]; 
 
     } 
 
     }); 
 
     // Done! 
 
     documentLoaded(); 
 
    }, 
 
    }); 
 
};

Dann laden Sie es einfach in Ihre Tests:

import { expect } from 'chai'; 
 
import { beforeEach, describe, it } from 'mocha'; 
 
import React from 'react'; 
 
import { mount } from 'enzyme'; 
 

 
import Hello from '../../components/Hello'; 
 

 
// Load virtual DOM 
 
import loadDOM from '../loadDOM'; 
 

 
describe('<Hello />',() => { 
 
    beforeEach((done) => { 
 
    loadDOM(done); 
 
    }); 
 

 
    it('Renders Hello component',() => { 
 
    const props = { 
 
     title: 'World', 
 
    }; 
 
    const wrapper = mount(<Hello {...props} />); 
 
    expect(wrapper.find('#title')).to.equal(props.title); 
 
    }); 
 
});