2016-01-21 11 views

risposta

0

jsdom è l'ambiente predefinito che l'ultima versione di Jest utilizza, in modo da poter semplicemente manipolare le variabili globali, come window, document o location.

+1

Da jsdom v11, 'window.location' oggetto diventano non configurabile, e quindi non può essere modificato con 'Object.defineProperty()' più. – Blackus

2

Ho riscontrato un problema simile durante l'utilizzo di un progetto che richiede un URL (location.href). Puoi configurare jest con un testURL nella tua configurazione.

Ecco cosa si potrebbe inserire nel pacchetto package.json (se è così che si configura jest).

"jest": { 
    ...other config, 
    "testURL": "http://localhost:8080/Dashboard/index.html" 
} 

testURL Doc

Se avete bisogno di modifiche più specifiche per jsdom è possibile installare jsdom se stessi e di importazione e di configurare separatamente dal scherzo. Ecco un esempio:

test.js

'use strict'; 
import setup from './setup'; 
import React from 'react'; 
import { mount } from 'enzyme'; 
import Reportlet from '../components/Reportlet.jsx'; 

it('Reportlet Renders',() => { 
    ...some test stuff 
}); 

setup.js

import jsdom from 'jsdom'; 
const DEFAULT_HTML = '<html><body></body></html>'; 

// Define some variables to make it look like we're a browser 
// First, use JSDOM's fake DOM as the document 
global.document = jsdom.jsdom(DEFAULT_HTML); 

// Set up a mock window 
global.window = document.defaultView; 
global.window.location = "https://www.bobsaget.com/" 
// ...Do extra loading of things like localStorage that are not supported by jsdom