首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >提供Angular Router gets“无法读取未定义的属性'root‘”

提供Angular Router gets“无法读取未定义的属性'root‘”
EN

Stack Overflow用户
提问于 2019-06-19 15:19:22
回答 1查看 1.3K关注 0票数 1

我正在尝试测试一个按钮,当单击它时,它会导航到我的主页,但当我为Router类提供一个Jasmine Spy对象时,我得到一个"TypeError: Cannot read property 'root‘of undefined“。

代码语言:javascript
运行
AI代码解释
复制
describe('Error404Component', () =>
{
  let component: Error404Component;
  let fixture: ComponentFixture<Error404Component>;
  const routerSpy = jasmine.createSpyObj('Router', ['navigate']);

  beforeEach(async(() =>
  {
    TestBed.configureTestingModule({
      imports: [
        AppModule
      ]
    })
      .compileComponents();
  }));

  beforeEach(() =>
  {
    TestBed.overrideProvider(Router, { useValue: routerSpy });
    fixture = TestBed.createComponent(Error404Component);
    component = fixture.componentInstance;
    fixture.autoDetectChanges();
  });

  fit('should navigate', fakeAsync(() =>
  {
    const buttons = fixture.debugElement.queryAll(By.css('.button_link'));
    expect(buttons).toBeTruthy();

    const homeButton = buttons[0];
    (homeButton.nativeElement as HTMLButtonElement).click();

    fixture.detectChanges();
    tick();

    const spy = routerSpy.navigate as jasmine.Spy;

    expect(spy.calls.any()).toBeTruthy();
    expect(spy.calls.first().args[0][0]).toEqual(HOME_PATH);
  }));

});
EN

回答 1

Stack Overflow用户

发布于 2019-06-19 15:30:08

configureTestingModule使用TestBed时,您应该提供在component中使用的router和所有其他服务注入。

代码语言:javascript
运行
AI代码解释
复制
 describe('Error404Component', () =>
  {

   class MockRouter {
     navigate = jasmine.createSpy('navigate');
   }
  let component: Error404Component;
  let fixture: ComponentFixture<Error404Component>;
  let routerSpy;

  beforeEach(async(() =>
  {
  routerSpy= new MockRouter();
    TestBed.configureTestingModule({
      imports: [
        AppModule
      ],
      providers: [{ provide: Router, useValue: routerSpy }],
      schemas: [NO_ERRORS_SCHEMA]
    })
      .compileComponents();
  }));

  beforeEach(() =>
  {
    fixture = TestBed.createComponent(Error404Component);
    component = fixture.componentInstance;
    fixture.autoDetectChanges();
  });

  fit('should navigate', fakeAsync(() =>
  {
    const buttons = fixture.debugElement.queryAll(By.css('.button_link'));
    expect(buttons).toBeTruthy();

    const homeButton = buttons[0];
    (homeButton.nativeElement as HTMLButtonElement).click();

    fixture.detectChanges();
    tick();

    const spy = routerSpy.navigate as jasmine.Spy;

    expect(spy.calls.any()).toBeTruthy();
    expect(spy.calls.first().args[0][0]).toEqual(HOME_PATH);
  }));

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

https://stackoverflow.com/questions/56671101

复制
相关文章
不动点与递归数列的极限有关吗_递推数列不动点法
有些收敛的数列才有不动点,比如x=1+x^(-1) ;x=1+x^(-2);x=1+x^(-3),下面写程序验证:
全栈程序员站长
2022/10/01
3810
【Openxml】将Openxml的椭圆弧线arcTo转为Svg的椭圆弧线
因此实际上,我们需要求出的则是圆弧终点坐标就能够完成最终换算到Svg椭圆弧线字符串了
ryzenWzd
2021/09/01
1K0
LeetCode 1064. 不动点(二分查找)
给定已经按升序排列、由不同整数组成的数组 A,返回满足 A[i] == i 的最小索引 i。 如果不存在这样的 i,返回 -1。
Michael阿明
2020/07/13
5170
python之turtle模块-弧线
前面已经画过圆了,那么画弧线就会容易很多。知道弧的度数之后,实际上只需要画相应部分的圆就可以得到想要的弧。
生信交流平台
2020/08/06
2.7K0
python之turtle模块-弧线
一点点从坑里爬出来:如何正确打开 WPF 里的 Popup?
在 WPF 中打开一个 Popup 并没有想象当中容易。虽说提供了一个 IsOpen 属性用于显示 Popup,但实际上造成的 Bug 会让你解得死去活来。Win32 的 WS_POPUP 也坑,不过 WPF 会额外再带来一些,所以本文只说 WPF。
walterlv
2023/10/22
6980
Python文件处理:创建、打开、追加、
在Python中,不需要导入外部库来读取和写入文件。Python为创建、写入和读取文件提供了内置的函数。
py3study
2020/01/06
2.4K0
如何科学的打开 Leetcode
Leetcode 对于学计算机专业的同学,就如 PhotoShop 对于学设计的同学来说,最熟悉不过了。
五分钟学算法
2019/10/30
1.2K0
如何科学的打开 Leetcode
如何科学的打开 Leetcode?
Leetcode 对于学计算机专业的同学,就如 PhotoShop 对于学设计的同学来说,最熟悉不过了。
GitHubDaily
2019/11/01
1.3K0
如何科学的打开 Leetcode?
如何打开DNSSEC?
DNS(域名系统)类似于Internet的电话簿:它告诉计算机在哪里发送信息,在什么地方搜索信息。遗憾的是,它也接受因特网提供给它的任何地址,这并不成问题。
幻影龙王
2021/09/08
2.2K0
GO语言文件的创建与打开实例分析
文件操作是个很重要的话题,使用也非常频繁,熟悉如何操作文件是必不可少的。Golang 对文件的支持是在 os package 里,具体操作都封装在 type File struct {} 结构体中。 一、func Open(name string) (file *File, err error) 再简单不过了,给一个路径给它,返回文件描述符,如果出现错误就会返回一个 *PathError。 这是一个只读打开模式,实际上就是 os.OpenFile() 的快捷操作,它的原型如下: func Open(nam
李海彬
2018/03/26
9980
创建线程的方式打开记事本
今天操作系统课老师讲到进程,提出了一个有趣的小实验:能否以系统调用的方式利用 Windows 创建进程的系统调用函数来打开一个软件。闲着蛋疼的我立马来了兴趣,姑且写一个玩玩(
浪漫主义狗
2023/09/20
2960
创建线程的方式打开记事本
打开IDEA的更新选项,如何打开IDEA更新弹窗
在最下方有个Do not show this dialog in the future的勾选框
noteless
2019/09/06
3.3K0
打开IDEA的更新选项,如何打开IDEA更新弹窗
GO语言文件的创建与打开实例分析
文件操作是个很重要的话题,使用也非常频繁,熟悉如何操作文件是必不可少的。Golang 对文件的支持是在 os package 里,具体操作都封装在 type File struct {} 结构体中。 一、func Open(name string) (file *File, err error) 再简单不过了,给一个路径给它,返回文件描述符,如果出现错误就会返回一个 *PathError。 这是一个只读打开模式,实际上就是 os.OpenFile() 的快捷操作,它的原型如下: func Open(nam
李海彬
2018/03/22
8450
pycharm如何打开原来的项目_terminal怎么打开
Pycharm的下方工具栏中有两个窗口:Python Console和Terminal(如下图)
全栈程序员站长
2022/09/27
3.1K0
pycharm如何打开原来的项目_terminal怎么打开
Unity【InitializeOnLoadMethod】- 如何在项目工程打开时创建一个窗口
我们在Unity中安装的一些插件、工具,会在工程打开时弹出一个相关介绍的窗口,实现这样的功能需要用到InitializeOnLoadMethod这个特性,下面是官方文档中关于该特性的介绍:
CoderZ
2022/08/29
1.2K0
Unity【InitializeOnLoadMethod】- 如何在项目工程打开时创建一个窗口
rsync 自动创建目录的坑点
rsync同步文件有三种模式: 1、把源站路径下某个文件,同步到目标路径。例如rsync -aR /data/1/2/3/a.txt 1.1.1.1:/data/ ,目标机器将自动创建多层目录存放a.txt。也可以换不同存放目录,例如rsync -aR /data/1/2/3/a.txt 1.1.1.1:/backup/,得到/backup/data/1/2/3/a.txt。 2、把源站某个目录,同步到目录路径。例如rsync -a /data/1/2/3 1.1.1.1:/data/other/ ,将
用户1258909
2018/07/03
3.1K0
开发者 vs ChatGPT:开发者如何始终赢得比赛?
在不断发展的技术领域,开发人员在塑造我们生活的数字世界方面发挥着至关重要的作用。他们是架构师、问题解决者和创新软件解决方案背后的创造性思维。虽然像 ChatGPT 这样的人工智能模型在自然语言处理方面取得了重大进步,但开发人员仍然是软件开发成功的关键。本文探讨了开发人员始终胜过 ChatGPT 的原因,以及他们独特的技能和能力如何赋予他们制胜优势。
IT千锋教育
2023/06/12
2140
如何打开 plist 文件
plist 文件是一种用于存储应用程序配置信息的文件格式,其中包含应用程序的各种设置和数据。在过去,plist 文件通常是以.plist 格式存储的。然而,随着时间的推移,人们开始使用.plistx 格式来存储更复杂的数据结构和数据。如果您需要将.plist 文件打开,可以使用在线工具或命令行工具。本文将为您介绍如何使用在线工具打开.plist 文件。
iOS程序应用
2023/04/12
3K0
如何打开rdb文件
RDB文件是QQ2009SP以后的替代DB文件的一种新的文件格式,是一种数据库文件请下载
全栈程序员站长
2022/07/08
4K0
如何打开rdb文件
如何打开ipynb文件
《如何打开ipynb文件》文章摘要:本文介绍了如何打开.ipynb后缀的文件,并提供了两种方法。第一种方法是直接使用IPython Notebook打开,第二种方法是将.ipynb文件扔进Spyder中打开。使用IPython Notebook打开需要先安装IPython Notebook,而使用Spyder打开则需要先安装Anaconda。两种方法都可以在浏览器窗口上启动Notebook,方便进行交互编程和学习。
chaibubble
2018/01/02
7.6K0
如何打开ipynb文件

相似问题

最小不动点最大不动点

11

如何用两个补不动点加不动点?

10

Django模型:创建小值不动点

13

类型不动点

13

不动点迭代

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档