2016-01-21 46 views

回答

0

jsdom是默認的環境玩笑的最新版本使用,所以你可以簡單地操作全局變量,如windowdocumentlocation

+1

從jsdom V11,'window.location'對象成爲不可配置的,並且因此不能被修改與'Object.defineProperty()'了。 – Blackus

2

我在使用需要url(location.href)的項目時遇到了類似的問題。您可以在配置中使用testURL配置jest。

下面是你可能會把你的package.json(如果這是你如何配置笑話)。

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

testURL Doc

如果您需要更具體的變化jsdom可以安裝jsdom自己和進口和從玩笑單獨配置它。這裏有一個例子:

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