2016-02-17 23 views
5

Tôi mới sử dụng Jest và cố gắng viết một số bài kiểm tra đơn vị cho Ứng dụng React hiện có của mình. Tôi có một biến toàn cầu window.CONFIG lưu trữ một số cấu hình được sử dụng tại các địa điểm khác nhau trong ứng dụng. Biến này được khởi tạo trong một thẻ script của trang HTML hạ cánhBiến toàn cầu trong Bài kiểm tra Đơn vị Jest

Bây giờ tôi đang cố gắng để viết một bài kiểm tra của một hàm helper mà phụ thuộc vào window.CONFIG này và nó luôn luôn là undefined khi truy cập

Đây là mã:

config.js

export default window.CONFIG; 

app/helper.js

import config from "../config"; 

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

_ kiểm tra _/người giúp đỡ-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 cho Get Company Url luôn là undefined. Vì trang đích của trình duyệt không được tải window.CONFIG không được khởi tạo. Làm thế nào tôi có thể thử mô-đun này config trong thử nghiệm đơn vị của tôi trong Jest?

Cảm ơn trước !!

Trả lời

0

tôi giải quyết điều này bằng cách tạo ra một mô hình thủ công config.js trong __mocks__ thư mục như sau:

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

__mockConfig.baseUrl = "test_base_url/"; 

configMock = __mockConfig; 

export default configMock; 
2

Tôi không chắc chắn nếu điều này giúp bạn hay không nhưng bạn có thể đặt các biến toàn cục trực tiếp vào bạn package.json

"jest":{ 
    "globals": { 
    "config": {"foo":"bar"} 
    } 
} 
Các vấn đề liên quan