向窗口类型定义添加角度

时间:2019-02-28 13:09:09

标签: angular typescript cypress

我正在启动和运行Cypress。我想让赛普拉斯直接调用我的一些函数来检查它们的输出。

虽然在我的测试中,我似乎无法获得对角度的引用。我看到了一些有关在全局窗口对象中添加自定义“角度”属性的信息,但我似乎仍然无法弄清楚。

https://github.com/cypress-io/cypress/issues/3068#issuecomment-454109519

基于上面的示例,我将如何创建一个自定义属性,以便可以在Cypress中获得角度对象?

1 个答案:

答案 0 :(得分:3)

index.d.ts中使用以下内容创建一个cypress/support(例如,添加一个名为ng的属性):

interface Window {
  ng: {
    probe: typeof import("@angular/platform-browser/src/dom/debug/ng_probe").inspectNativeElement
    // // un-comment if you need these for some reason:
    // ɵcompilerFacade: import("@angular/compiler/src/jit_compiler_facade").CompilerFacadeImpl
    // coreTokens: {
    //   ApplicationRef: import("@angular/core").ApplicationRef
    //   NgZone: import("@angular/core").NgZone
    // }
  }
}

那么您应该可以使用:

cy.get('.some-ng-element').then(($el) => {
  const el = $el[0]  // get the DOM element from the jquery element
  const win = el.ownerDocument.defaultView // get the window from the DOM element
  const component = win.ng.probe(el).componentInstance
})