Se moquant de "document" dans la plaisanterie

Je suis en train d'écrire des tests pour mes composants web des projets dans la plaisanterie. J'ai déjà utiliser babel avec es2015 preset. Je suis confronté à un problème lors du chargement du fichier js. J'ai suivi un morceau de code où document objet a une currentScript objet. Mais dans le test contexte, il est null. Je pensais donc de se moquer de même. Mais jest.fn() est pas vraiment dans le même. Comment puis-je gérer ce problème?

Morceau de code où la plaisanterie est un échec.

var currentScriptElement = document._currentScript || document.currentScript;
var importDoc = currentScriptElement.ownerDocument;

Cas de Test que j'ai écrit. component.test.js

import * as Component from './sample-component.js';

describe('component test', function() {
  it('check instance', function() {
    console.log(Component);
    expect(Component).toBeDefined();
  });
});

Voici l'erreur renvoyée par plaisanterie

Test suite failed to run

    TypeError: Cannot read property 'ownerDocument' of null

      at src/components/sample-component/sample-component.js:4:39

Mise à jour:
Conformément à la suggestion de Andreas Köberle, j'ai ajouté quelques les variables globales et a essayé de se moquer comme suit

__DEV__.document.currentScript = document._currentScript = {
  ownerDocument: ''
};
__DEV__.window = {
  document: __DEV__.document
}
__DEV__.document.registerElement = jest.fn();

import * as Component from './arc-sample-component.js';

describe('component test', function() {
  it('check instance', function() {
    console.log(Component);
    expect(Component).toBeDefined();
  });
});

Mais pas de chance

Mise à jour: j'ai essayé le code ci-dessus sans __dev__. Aussi par la mise en document en tant que global.

Avez-vous essayé d'utiliser global.document?
oui..j'ai essayé..pas de chance..
J'ai donc utilisé jsdom comme const jsdom = require('jsdom'); const documentHTML = '<!doctype html><html><body><div id="root"></div></body></html>'; global.document = jsdom.jsdom(documentHTML); Et d'après ce que j'ai virer de bord sur tout ce que je veux pour le document et sont disponibles dans mes tests.
en fait le problème ici est, jsdom est très simple et n'a pas webcomponents API. De toute façon temporairement résolu que par ma réponse.

OriginalL'auteur thecodejack | 2016-12-12