Необходимо получить «ID» из Cypess Test - PullRequest
0 голосов
/ 28 февраля 2020

Я учусь Cypress, поэтому я совершенно новый. У меня есть приложение VUE, которое при отправке формы отправляет Posts данные в Firebase (это работает нормально)

Но что происходит, когда сообщение готово, оно создает для меня уникальный идентификатор использовать это, где я изо всех сил, как при запуске моего Post теста, он работает и проходит нормально, но мои следующие шаги должны убедиться, что опубликованные данные затем отображаются в моем «Активном» компоненте как карточка с Отображается заголовок, содержимое и c.

Здесь я падаю, поскольку хочу получить идентификатор из данных Posted, а затем в своем проверочном тесте я могу использовать этот идентификатор так, он не путается с другими карточками на странице и вызывает ложный пропуск.

У кого-нибудь есть идеи?

Я думал, что у них есть const, который при отправке формы получить идентификатор из данных, тогда я могу использовать const, но я не знаю, как это сделать

Vue Почтовый индекс

blogsCollection.add({
    uid: Math.floor(Math.random() * 90000) + 10000,
    title: this.blog.title,
    body: this.blog.content,
    createdDate: this.$options.filters.fullMthDate(this.blog.publishDate),
    author: this.blog.author,
    active: true,
    closedDate: null,
})
.then((response) => {....

Добавить тест

it('Checks "Post" button functionality', function () {
            populateForm()
            cy.get('button[id=addButton]').click()
            cy.get('button[id=postButton]').click()

            cy.get('div[id=addBlogPreview]').should('not.exist')
            cy.get('div[id=addBlogForm]').should('not.exist')
            cy.get('div[id=activeBlogs]').should('be.visible')

            cy.wait(1000)

            cy.get('div[id=addDelToast]').should('be.visible')

            cy.wait(2250)

            cy.get('div[id=addDelToast]').should('not.exist')

            // const id = cy.get('.text-truncate').its('id')
            // console.log(id)

// Steps below are in the same terst but is where i need to use the ID
            cy.get('div[name=blogTitle]').contains('Blog title')
            cy.get('span[name=blogCreatedDate]')
            .then((element) => {
                expect(element.text().trim()).to.equal(blogPreviewPubDate);
            });
            cy.get('.card-body').contains('This is the blogs content')
            cy.get('.blogAuthor').contains('Tony')

            cy.get('button[name=closeButton]').not('be.disabled')
        })

1 Ответ

0 голосов
/ 28 февраля 2020

Я бы использовал команду cy.route () с cy.server ().

Это должно выглядеть так:

cy.server();
cy.route('POST', '**/[your post url]').as('yourPostAlias');
...
cy.get('button[id=postButton]').click();
cy.wait('@yourPostAlias').then(xhr => {
  // you should find your post ID in the xhr
  ...
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...