Вавилонский конст предотвращает мутацию? - PullRequest
0 голосов
/ 25 апреля 2018

Я пишу тесты в синтаксисе ES6 на базе Babel и использую Jest для запуска тестов.Вот мой тестовый код:

test('case: response body contains a user, should update sessionData', () => {
  // current user info in the session
  const currentUserInfo = {
    firstName: 'User1',
    lastName: 'Old Info'
  }

  const mockSessionData = createSessionHelper(
    {
      data: {
        user: currentUserInfo
      }
    },
    mockLogger
  )

  // new user info in the body
  const newUserInfo = {
    firstName: 'User2',
    lastName: 'New Info'
  }

  const body = {
    user: newUserInfo
  }

  const result = handleSuccess({
    req: {
      sessionData: mockSessionData
    },
    body
  })

  expect(result.status).toBe(DEFAULT_SUCCESS_STATUS)
  expect(result.body).toEqual(body)
  expect(mockSessionData.get('user')).toEqual(newUserInfo)
})

Как видите, я использую одни и те же объекты для использования в качестве параметров для функций, которые я тестирую, и для сопоставления результата с моими ожиданиями.

Я предполагаю, что эти функции не должны изменять эти параметры.Правда ли, что это предположение верно?

При использовании Babel const мои данные останутся прежними или я все еще буду использовать Object.freeze()?

1 Ответ

0 голосов
/ 25 апреля 2018

Как указывает ссылка ,

Значение константы не может быть изменено путем переназначения и не может быть повторно объявлено.

mockSessionData не может быть переназначен.const не может и не должен препятствовать изменению объекта, на который mockSessionData содержит ссылку.Object.freeze может использоваться, если объект не должен быть изменен.

...