2016-02-17 15 views
5

Jestem nowicjuszem Jest i próbuję napisać kilka testów jednostkowych dla mojej istniejącej aplikacji React. Mam zmienną globalną window.CONFIG, która przechowuje pewne konfiguracje, które są używane w różnych miejscach aplikacji. Zmienna ta jest zainicjowany w tagu skrypt wyładunku strony HTMLZmienna globalna w Jest Unit Test

Teraz próbuję napisać test funkcji pomocnika, który zależy od tego window.CONFIG i zawsze jest niezdefiniowana, kiedy dostęp

Oto kod:

config.js

export default window.CONFIG; 

APP/helper.js

import config from "../config"; 

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

_ testy _/pomocnicy-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 dla Get Company Url zawsze jest niezdefiniowany. Ponieważ strona docelowa przeglądarki nie została załadowana, window.CONFIG nie został zainicjowany. Jak mogę wyśmiewać ten moduł config w moim teście jednostki w Jest?

Z góry dziękuję !!

Odpowiedz

0

Rozwiązałem to przez tworzenie ręcznej próbną config.js__mocks__ w katalogu następująco:

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

__mockConfig.baseUrl = "test_base_url/"; 

configMock = __mockConfig; 

export default configMock; 
2

Nie jestem pewien, czy to pomaga czy nie, ale można umieścić zmienne globalne bezpośrednio do package.json

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