例えば window.navigator.language
を変更したい場合などに用いる
テスト対象コード例 isSupportedLang.ts
export function isSupportedLang(): boolean {
return ['ja','en', 'fr'].indexOf(window.navigator.language) >= 0;
}
テストコード例 isSupportedLang.test.ts
import { isSupportedLang } from '../../src/utils/isSupportedLang';
describe("when browser language is not in [ja,en.fr]", () => {
let windowSpy;
beforeEach(() => {
const originalWindow = { ...window };
windowSpy = jest.spyOn(global, "window", "get");
windowSpy.mockImplementation(() => ({
...originalWindow,
navigator: {
...originalWindow.navigator,
language: 'Mocked_language'
}
}));
});
afterEach(() => {
windowSpy.mockRestore();
});
it('will be falsy', () => {
expect(isSupportedLang()).toBeFalsy();
});
});
describe("when browser language is fr", () => {
let windowSpy;
beforeEach(() => {
const originalWindow = { ...window };
windowSpy = jest.spyOn(global, "window", "get");
windowSpy.mockImplementation(() => ({
...originalWindow,
navigator: {
...originalWindow.navigator,
language: 'fr'
}
}));
});
afterEach(() => {
windowSpy.mockRestore();
});
it('will be truehy', () => {
expect(isSupportedLang()).toBeTruthy();
});
});