В приложении 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. Любые идеи о том, как решить эту проблему?
Оригинальный ответ может работать да, но последний машинописный текст (4.9.4) жалуется на часть window.Cypress. Первая ссылка на самом деле является рабочим примером.





Вы пропустили шаг, ссылка должна быть на свойство компонента через this
if (windowWithStore.Cypress) {
windowWithStore.store = this.store;
}
Похоже, что используемая вами версия параметра уничтожается после инициализации компонента.
Ты прав. Когда я настраивал этот код, я случайно удалил часть .this. Компонент приложения разрушался, пока я не внес небольшое изменение в часть Cypress, теперь у меня, кажется, есть доступ к переменной. Мне все еще нужно выяснить, как с этим работать, но определенно выглядит лучше.
Так что этот вопрос работает Как использовать Angular Store в тестах Cypress e2e , вы просто сделали опечатку. Оригинальный ответ имеет 10 голосов, поэтому работает для большинства.