2017-05-03 2 views
1

Ich habe die folgende Funktion in main.js (mit node.exe geladen):Enzymreferenzfehler - nicht in der Lage Fensterfunktionen zugreifen

window.onload =() => { 
    window.getString = function() { 
     <Do something> 
     return value; 
    }; 
} 

Es folgt mein Testfall mit Enzyme und Mocha geschrieben

import "jsdom-global/register"; 
import React from "react"; 
import {mount} from "enzyme"; 
import Sessions from "./Sessions"; 
describe("Testing Sessions Page",() => { 
    it('should work',() => { 
     let wrapper = mount(<Sessions/>); 
    }); 
}); 

In meiner Sessions-Komponente, geschrieben mit React Framework, verwende ich die getString Methode. Wenn ich meinen Test starte, gibt es ReferenceError: getString is not defined. Wie mache ich die Fensterobjekte im Testcode zugänglich?

Antwort

0

Da Sie verwenden jsdom-global wird das Fensterobjekt definiert, aber das getString ist nicht, also entweder:

a) definiert die getString Methode in Ihren Tests vor dem beschreiben Block:

window.getString =() => {};

b) Stummel getString mit sinon, wenn Sie ihrem Aufruf

sinon.stub(window, 'getString'); testen wollen

c) sind nur die main.js in Ihnen Tests:

import './main.js';