在 beforeEach 中声明变量

6

当我在beforeEach(()=> {...中声明initialState为const时,出现了以下错误:

ReferenceError: initialState未定义

这不应该起作用吗?


请注意,本文中的HTML标签已被保留。
describe('register reducer', () => {
        beforeEach(() => {
            const initialState = UsersService.getInitialUsersState();
        })

        it('should return the initial state', () => {
            expect(usersReducer(undefined, [])).toEqual(initialState);
        });

        it('Toggle isBaby or sitter', () => {
            deepFreeze(initialState);
            let newState = initialState;
            newState.isBaby = true;

            expect(
                usersReducer(initialState, {
                    type: types.UsersActions.SET_TYPE,
                    payload: true
                })).toEqual(newState);
        });
2个回答

8

虽然这个问题已经很老了,但是我还是会提供一个可行的例子给其他碰到同样问题的人。以下是一种实现方式:

describe('register reducer', () => {
  let initialState
  beforeEach(() => {
      initialState = UsersService.getInitialUsersState();
  })

  it('should return the initial state', () => {
      expect(usersReducer(undefined, [])).toEqual(initialState);
  });

  it('Toggle isBaby or sitter', () => {
      deepFreeze(initialState);
      let newState = initialState;
      newState.isBaby = true;

      expect(
        usersReducer(initialState, {
          type: types.UsersActions.SET_TYPE,
          payload: true
        })
      ).toEqual(newState)
  })
})

7

虽然 beforeEach 在每个测试之前运行,但如果您按照这种方式执行,initialState 只在 beforeEach 的范围内可见,请将其更改为以下内容:

describe('register reducer', () => {
  let initialState;
  beforeEach(() => {
      initialState = UsersService.getInitialUsersState();
  })
  ...

我知道,但我也尝试使用var,但它没有起作用。 - July333

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接