Не могу запросить маршрут с CypressJS - PullRequest
0 голосов
/ 06 мая 2019

Я пытаюсь просто запросить данные из маршрута в рамках кипарисного теста:

it("Then it works", () => {

    cy.server()           
    cy.route({
        method: 'GET',     
        url: '/users/1',    
        response: true      
    })
    axios.defaults.headers.common = {
        "X-Requested-With": "XMLHttpRequest"
    }

    axios.get("http://localhost:8080/users/1").then(response => {
        console.log(response)
        expect(response.body).to.equal(true)
    }).catch(error => console.log(error))
})

Все, что я получаю, это «Ошибка: запрос не выполнен с кодом состояния 404», поэтому кажется, что маршрут недоступен для axios. В моем cypress.json я настроил базовый URL как:

{
  "baseUrl": "http://localhost:8080"
}

С моей точки зрения, это в основном пример из документации , и я не могу понять, почему это неправильно. Я знаю, что Cypress может обрабатывать только XMLHttpRequests, поэтому я настроил это для axios и хочу имитировать с помощью acios вызов, который обычно происходит в моем SPA.

1 Ответ

1 голос
/ 07 мая 2019

Вы делаете вызовы изнутри теста, в то время как cy.route полезен для перехвата запросов переднего плана. Больше: помните, что (из документов Cypress)

Команды Cypress ставятся в очередь и выполняются асинхронно

Что я имею в виду: интерфейсное приложение должно вызывать axios.get, а не вас непосредственно из теста.

Вы можете сделать:

  • cy.visit страница с глобальным определением axios 1016 *
  • пусть звонок начинается с внешнего интерфейса
it("Then it works", () => {

    cy.server()           
    cy.route({
        method: 'GET',     
        url: '/users/1',    
        response: true      
    })
    cy.visit("http://localhost:8000"); // replace it with your working app
    cy.window().then(win => {
        axios.defaults.headers.common = {
            "X-Requested-With": "XMLHttpRequest"
        }

        axios.get("http://localhost:8080/users/1").then(response => {
            console.log(response)
            expect(response.body).to.equal(true)
        }).catch(error => console.log(error))
    })
})

и все должно работать. Если нет, пожалуйста, поделитесь с ним репозиторием GitHub, и я помогу вам с этим ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...