2016-02-17 33 views
5

Sono nuovo di Jest e sto provando a scrivere alcuni test unitari per la mia App React esistente. Ho una variabile globale window.CONFIG che memorizza alcune configurazioni che vengono utilizzate in diversi punti dell'app. Questa variabile è inizializzata in un tag script di pagina HTML atterraggioVariabile globale nel test dell'unità Jest

Ora sto cercando di scrivere un test di una funzione di supporto, che dipende da questo window.CONFIG ed è sempre definita quando accede

Ecco il codice:

config.js

export default window.CONFIG; 

app/helper.js

import config from "../config"; 

export default { 
    getCompanyURL(company) { 
    return config.baseUrl + "/companies/" + company.id; 
    }, 
} 

_ test _/aiutanti-test.js

jest.dontMock('../app/helpers.js'); 

var helper = require('../app/helpers.js').default; 

describe('Get company URL', function() { 

it('returns company url with company id appended', function() { 
    expect(companies.getCompanyURL({id:  1})).toBe('test_base_url/companies/1'); 
}); 
}); 

config per Get Company Url è sempre indefinito. Poiché la pagina di destinazione del browser non è stata caricata, window.CONFIG non è inizializzata. Come posso prendere in giro questo modulo config nella mia unit test in Jest?

Grazie in anticipo !!

risposta

0

Ho risolto questo con la creazione di un finto manuale di config.js in __mocks__ directory come segue:

let configMock = jest.genMockFromModule('../config'); 
let __mockConfig = {}; 

__mockConfig.baseUrl = "test_base_url/"; 

configMock = __mockConfig; 

export default configMock; 
2

non sono sicuro se questo ti aiuta o no, ma si può mettere le variabili globali direttamente nella tua package.json

"jest":{ 
    "globals": { 
    "config": {"foo":"bar"} 
    } 
}