Проблема с вашим текущим кодом заключается в том, что при импорте редуктора устанавливается initialState
.
Это приводит к невозможности изменить значения параметров окна перед выполнением другого теста. SCENAR ios. Это означает, что вы не можете выполнить тест, чтобы проверить, когда у вас есть что-то в window.user
, и другой, чтобы проверить, когда window.user
не определено.
Для того, чтобы сделать это, вам придется изменить как вы определяете начальное состояние в редукторе. Один из способов сделать это - создать метод, который возвращает начальное состояние:
// reducer.js
import constants from '../constants'
const getInitialState = () => ({
user: window.user || '',
token: window.user ? window.user.token : '',
notification: '',
});
export default (state = getInitialState(), action) => {
switch (action.type) {
case constants.FETCH_USER:
return state.user
default:
return state
}
}
Теперь вы можете протестировать оба сценария ios:
describe('reducer', () => {
it('should return the initial state', () => {
expect(reducer(undefined, {})).toEqual({
user: '',
token: '',
notification: '',
});
});
it('should return the initial state from window', () => {
global.user = {
token: 'tag-AAA',
permissions: true,
};
expect(reducer(undefined, {})).toEqual({
user: { token: 'tag-AAA', permissions: true, },
token: 'tag-AAA',
notification: '',
});
// Set the global value to undefined so that it does not affect following tests.
global.user = undefined;
});
});