Тестирование API в черном ящике в JS / Vue с шуткой - PullRequest
0 голосов
/ 06 апреля 2020

Ну, у меня есть интересный случай ...

Я пытаюсь протестировать действие Vuex, которое использует Okta SDK для входа в систему пользователя. Ничего особенного там нет. Но на уровне тестирования я застрял, пытаясь поймать идею. Я имею в виду, я просто хочу знать, были ли вызваны функции, а не что-нибудь еще, вот код:

Служба:

const signIn = async ({ username, password }) => {
  const response = await authClient.signIn({ username, password })
  if (response.status === 'SUCCESS') {
    const tokens = await authClient.token.getWithoutPrompt({
      responseType: 'id_token',
      sessionToken: response.sessionToken
    })
    authClient.tokenManager.add('idToken', tokens.tokens.idToken)
    return response
  }
}

Действие:

async logIn({ commit }, { username, password }) {
  const loginData = await signIn({ username, password })
  commit(mutationTypes.setUserData, {
    ...loginData.user.profile
  })
}

Тест:

const authClient = {
  signIn() {
    return new Promise(resolve => resolve())
  },
  token: {
    getWithoutPrompt() {
      return new Promise(resolve => resolve())
    }
  },
  tokenManager: {
    add() {
      return new Promise(resolve => resolve())
    }
  }
}

jest.mock('authClient', () => authClient)

it('Auth -> actions.signIn', async () => {
  const commit = jest.fn()
  const username = 'user'
  const password = 'pass'
  await actions.signIn({ commit }, { username, password })

  expect(authClient.signIn).toHaveBeenCalled()
  expect(authClient.token.getWithoutPrompt).toHaveBeenCalled()
  expect(authClient.tokenManager.add).toHaveBeenCalled()
  expect(commit).toHaveBeenCalled()
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...