Se moquant de la Fenêtre avec Sinon, de Moka, de l'Enzyme, et de Réagir

Je suis en train de se moquer de la fenêtre de l'objet pour un composant que j'utilise avec seulement quatre bibliothèques énumérés ci-dessus.

Je sais que cela peut être fait avec JSDom mais le client est à l'encontre de l'utiliser. Basé sur mes recherches tout simplement faire sinon.stub(fenêtre, "emplacement") devrait fonctionner, mais quand je lance mes tests, je reçois toujours la Fenêtre de undefined dans mon composant.

Actuellement le composant est appelé dans le rendu de retour {la fenêtre.emplacement.hôte}

toutes les pensées de ce que je fais de mal à obtenir sinon à talon qu'une seule pièce. Une fois que je stub ce morceau je peux alors me concentrer sur le test de la d'autres parties de la composante qui n'ont rien à voir avec fenêtre.

Ma Méthode D'Essai:

import React from 'react';

import { shallow } from 'enzyme';
import chai from 'chai';
chai.should();
import sinon from 'sinon';

import BillingStatementRow from '../BillingStatementRow';

describe('Test <BillingStatementRow /> Component', function() {

    context('Function Testing', function() {

        it('Test - onFieldChange - Make sure it handles NaN', function() {

            var e = {target: {value: NaN}};

            var window = { location : { host : "..." } };

            var mockedOnChange = sinon.spy();

            const wrapper = shallow (
                <BillingStatementRow slds={''} key={'1'}
                    Id={'1'} inputValue={'0'} salesInvoice={'SIN0001'}
                    invoicedAmount={1000} duedate={'1461628800000'}
                    outstandingBalance={1000} receiptRemaining={1000}
                    amountAllocated={1000} onChange={mockedOnChange.bind(this,'BS0001')} />
            );

            wrapper.instance().onFieldChange('amountAllocated', e);
            wrapper.update();


        })


    });

});
  • Je suppose que vous avez déclaré window premier (comme un objet vide ou quelque chose)? Aussi, est-il disponible partout (c'est à dire est-il un mondial)? MODIFIER: hmm, jamais l'esprit, window.location n'est pas une fonction, de toute façon, et Sinon ne peut stub fonctions. Encore, exactement ce que voulez-vous tester? Pourquoi ne pas déclarer un mondial window = { location : { host : "..." } }?
  • Yep fenêtre est déclaré en premier mais il me donne toujours la fenêtre n'est pas défini.
  • Essayez global.window = { location : ... } à la place.
  • Merci, on dirait qu'il a travaillé.
InformationsquelleAutor DimlyAware | 2016-06-10