首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >预期间谍导航已被[帐户]调用,但从未被调用

预期间谍导航已被[帐户]调用,但从未被调用
EN

Stack Overflow用户
提问于 2019-10-04 08:41:14
回答 1查看 255关注 0票数 0

我正在编写角度应用程序的单元测试。我想测试router.navigate是否带我去正确的位置。

当API响应成功时,router.navigate会选择不同的位置。但是这个测试失败了,因为“预期间谍导航被用‘帐户’调用了,但是它从来没有被调用过。”

AccountsListComponent.ts

代码语言:javascript
运行
复制
 deleteRecord(id) {
    this.http.delete('/api/accounts/' + id)
    .subscribe(res => {
        if (res['status'] == "FAILURE") {
          console.log("failure");
        } else {
          console.log("API responded success"); //this is printed
          this.router.navigate([ '/accounts' ]); // I want to test this
        }
      }, (err) => {
           console.log(err);
      }
    );
  }

component.spec.ts

代码语言:javascript
运行
复制
  routerStub = {
      navigate: jasmine.createSpy('navigate'),
    };

    TestBed.configureTestingModule({
      imports:[RouterTestingModule,FormsModule,ReactiveFormsModule,HttpClientTestingModule,RouterTestingModule.withRoutes([{ path: 'accountsList', component: AccountsListComponent}])],
      declarations: [ AccountDetailComponent,AccountsListComponent ],
      schemas:[CUSTOM_ELEMENTS_SCHEMA]
    })


it ('should delete account, if account exist and take back to accountsList page', ()=> {
    let spyOnDelete = spyOn (component,'deleteRecord').and.callThrough();
    fixture.detectChanges();
    component.record.AccountID = "account";
    fixture.detectChanges();
    let deleteButtonDOM = fixture.debugElement.query(By.css('#deletebtn'));
    deleteButtonDOM.triggerEventHandler('click',null);
    fixture.detectChanges();
    expect(spyOnDelete).toHaveBeenCalled(); //passes
    const req = _HttpTestingController.expectOne('/api/accounts/'+ component.record.AccountID);
    expect(req.request.method).toBe("DELETE");
    req.flush({status:"SUCCESS"});
    expect(routerStub.navigate).toHaveBeenCalledWith('accounts');//fails???

  }) 
EN

回答 1

Stack Overflow用户

发布于 2019-10-04 09:40:06

您正在监视您的函数deleteRecord,这意味着调用将在不执行函数的情况下进行。您不应该监视正在测试的函数,而应该监视http.delete()函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58232810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档