代码之家  ›  专栏  ›  技术社区  ›  Anuj TBE

ng测试:抛出了[object ErrorEvent]

  •  0
  • Anuj TBE  · 技术社区  · 6 年前

    我在用 Angular 6

    跑步时

    ng test
    

    ResetPasswordComponent should create
    [object ErrorEvent] thrown
    

    在窗口控制台中,它正在

    Error: Cannot match any routes. URL Segment: 'auth/login'
    at ApplyRedirects.noMatchError (VM4374 router.js:1455)
    at CatchSubscriber.eval [as selector] (VM4374 router.js:1436)
    at CatchSubscriber.error (VM4260 catchError.js:40)
    at MapSubscriber.Subscriber._error (VM4156 Subscriber.js:90)
    at MapSubscriber.Subscriber.error (VM4156 Subscriber.js:70)
    at MapSubscriber.Subscriber._error (VM4156 Subscriber.js:90)
    at MapSubscriber.Subscriber.error (VM4156 Subscriber.js:70)
    at MapSubscriber.Subscriber._error (VM4156 Subscriber.js:90)
    at MapSubscriber.Subscriber.error (VM4156 Subscriber.js:70)
    at TapSubscriber._error (VM4280 tap.js:67)
    at ApplyRedirects.noMatchError (VM4374 router.js:1455)
    at CatchSubscriber.eval [as selector] (VM4374 router.js:1436)
    at CatchSubscriber.error (VM4260 catchError.js:40)
    at MapSubscriber.Subscriber._error (VM4156 Subscriber.js:90)
    at MapSubscriber.Subscriber.error (VM4156 Subscriber.js:70)
    at MapSubscriber.Subscriber._error (VM4156 Subscriber.js:90)
    at MapSubscriber.Subscriber.error (VM4156 Subscriber.js:70)
    at MapSubscriber.Subscriber._error (VM4156 Subscriber.js:90)
    at MapSubscriber.Subscriber.error (VM4156 Subscriber.js:70)
    at TapSubscriber._error (VM4280 tap.js:67)
    at resolvePromise (VM4143 zone.js:813)
    at resolvePromise (VM4143 zone.js:770)
    at eval (VM4143 zone.js:872)
    at ZoneDelegate.invokeTask (VM4143 zone.js:420)
    at ProxyZoneSpec.onInvokeTask (VM4148 zone-testing.js:318)
    at ZoneDelegate.invokeTask (VM4143 zone.js:419)
    at Object.onInvokeTask (VM4143 zone.js:298)
    at ZoneDelegate.invokeTask (VM4143 zone.js:419)
    at Object.onInvokeTask (VM4151 core.js:4109)
    at ZoneDelegate.invokeTask (VM4143 zone.js:419)
    at 
    

    我创造了 auth ResetPasswordComponent .

    这个 AuthModule 在中导入 auth-layout 模块和路由在中定义 身份验证布局 模块。

    身份验证模块

    @NgModule({
      imports: [
        CommonModule,
        ReactiveFormsModule,
        FormsModule,
        RouterModule
      ],
      declarations: [
        LoginComponent,
        LogoutComponent,
        ForgotPasswordComponent,
        ResetPasswordComponent
      ],
      exports: [
        LoginComponent,
        ForgotPasswordComponent,
        ResetPasswordComponent,
        LogoutComponent
      ]
    })
    export class AuthModule { }
    

    根本没有 auth/login 在组件文件中。

    复位-密码.component.html

    <a routerLink="/auth/login">Login</a>
    
    0 回复  |  直到 6 年前
        1
  •  0
  •   Chrone    5 年前

    other related questions 已经工作或申请了,我就把这个留在这里。

    [object ErrorEvent] thrown Jasmine窗口中出现错误,控制台中出现相应错误:

    Uncaught Error: Uncaught (in promise): Error: Cannot match any routes. URL Segment: 'members'
    Error: Cannot match any routes. URL Segment: 'members'
    at ApplyRedirects.push../node_modules/@angular/router/fesm5/router.js.ApplyRedirects.noMatchError
    ...
    

    与OP一样,错误中引用的路径 在规范或规范所属的组件中没有引用

    紧接着之前 RouterTestingModule.withRoutes 打电话。

    TLDR公司:

    如果你有 第一部分 , ,但第三个组件在与上述情况类似的情况下发生故障,则 检查 路由器测试模块.withRoutes 导入缺少的路由。例如

    ...
    
    describe('SecondComponent', () => {
      beforeEach(() => {
        TestBed.configureTestingModule({
          imports: [
    RouterTestingModule.withRoutes([{path:'missing/path',component:SecondComponent}])
          ],
          declarations: [ SecondComponent ]
        })
      })
    
      ...
    
    })
    
    @Component({selector:'app-second',template:''})
    class SecondComponent {}
    

    推荐文章