在 beforeEach 中声明变量

Jul*_*333 5 unit-testing constants variable-declaration angular

我得到

参考错误:initialState 未定义

当我将 initialState 声明为 const in 时beforeEach(()=> {...。那不应该工作吗?

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);
        });
Run Code Online (Sandbox Code Playgroud)

bug*_*ugs 5

虽然确实beforeEach在每次测试之前运行,但如果您这样做,initialState则仅在 范围内可见,请将其beforeEach更改为:

describe('register reducer', () => {
  let initialState;
  beforeEach(() => {
      initialState = UsersService.getInitialUsersState();
  })
  ...
Run Code Online (Sandbox Code Playgroud)


bri*_*ang 5

这个问题真的很老,但只是在这里为遇到这个问题的其他人提供一个工作示例。这是您可以做到的一种方法:

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)
  })
})
Run Code Online (Sandbox Code Playgroud)