Как получить доступ к состоянию NgRX в Cypress Test

В приложении Angular я хочу получить доступ к состоянию приложения внутри теста Cypress.

Я следовал предложениям в: Как использовать Angular Store в тестах Cypress e2e

Пока ничего не получилось. Моя текущая установка:

export interface IWindowCypress {
  store: Store;
  Cypress: unknown;
}
export class AppComponent {
  constructor(protected store: Store) {
    const windowWithStore: IWindowCypress = window as unknown as IWindowCypress;
    console.info('AppComponent');
    if (windowWithStore.Cypress) {
      console.info('save store');
      windowWithStore.store = store;
    }
  }
}

В Кипарисовой стороне,

describe('My First Test', () => {
  before(() => {
    cy.window().its('store').should('have.length', 6)
  })

У меня нет ошибок типа с этой настройкой. Но в тесте Cypress cy.window.store не существует. Я пытался передать массив вместо хранилища, и даже этого не существует на стороне Cypress. Любые идеи о том, как решить эту проблему?

Так что этот вопрос работает Как использовать Angular Store в тестах Cypress e2e , вы просто сделали опечатку. Оригинальный ответ имеет 10 голосов, поэтому работает для большинства.

Vagdevi 10.12.2022 04:16

Оригинальный ответ может работать да, но последний машинописный текст (4.9.4) жалуется на часть window.Cypress. Первая ссылка на самом деле является рабочим примером.

usalin 10.12.2022 09:45
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
1
2
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

if (windowWithStore.Cypress) {
  windowWithStore.store = this.store;
}

Похоже, что используемая вами версия параметра уничтожается после инициализации компонента.

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

usalin 09.12.2022 22:40

Другие вопросы по теме