Как эмулировать действия магазина vuex с кипарисом - PullRequest
0 голосов
/ 01 июля 2018

У меня есть процесс входа в систему, где после отправки запроса на сервер и получения ответа я делаю это:

 this.$auth.setToken(response.data.token);
 this.$store.dispatch("setLoggedUser", {
     username: this.form.username
 });

Теперь я хотел бы эмулировать это поведение при тестировании с помощью Cypress, поэтому мне не нужно входить в систему каждый раз, когда я запускаю тест.

Итак, я создал команду:

Cypress.Commands.add("login", () => {
  cy
    .request({
      method: "POST",
      url: "http://localhost:8081/api/v1/login",
      body: {},
      headers: {
        Authorization: "Basic " + btoa("administrator:12345678")
      }
    })
    .then(resp => {
      window.localStorage.setItem("aq-username", "administrator");
    });

});

Но я не знаю, как эмулировать действия "setLoggedUser", любая идея?

1 Ответ

0 голосов
/ 05 июля 2018

В коде приложения, где вы создаете vuex store, вы можете условно выставить его Cypress:

const store = new Vuex.Store({...})

// Cypress automatically sets window.Cypress by default
if (window.Cypress) {
  window.__store__ = store
}

затем в вашем коде теста Cypress:

cy.visit()
// wait for the store to initialize
cy.window().should('have.property', '__store__')

cy.window().then( win => {
  win.__store__.dispatch('myaction')
})

Вы можете добавить это в качестве другой пользовательской команды, но убедитесь, что вы впервые посетили ваше приложение , так как в противном случае хранилище vuex не будет существовать.

...