使用 Snapshot 和 ParamMap 的 Angular Mock ActivatedRoute

2023-11-26

我正在使用这个,来自here:

constructor(private heroService: HeroService,
    private activatedRoute: ActivatedRoute) {
}

ngOnInit() {
    const heroId = this.activatedRoute.snapshot.paramMap.get('id');
    this.heroService.getHeroById(heroId).subscribe((hero: Hero) => {
        ...
    });
}

现在我有一个单元测试需要模拟这个ActivatedRoute。我已经在 stackoverflow 中检查了一些答案,但没有运气。

请注意,我正在使用 snapshot.paramMap这么多解决方案根本不起作用。例如,this, this, and this不工作。

我认为近乎有效的答案可能是:

{
    provide: ActivatedRoute,
    useValue: {paramMap: Observable.of(convertToParamMap({id: 1}))}
}

但也不起作用。

显示的错误是:

Error: Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'ng:///HeroesModule/HeroDetailComponent_Host.ngfactory.js'.
    error properties: Object({ INDEX_SIZE_ERR: 1, DOMSTRING_SIZE_ERR: 2, HIERARCHY_REQUEST_ERR: 3, WRONG_DOCUMENT_ERR: 4, INVALID_CHARACTER_ERR: 5, NO_DATA_ALLOWED_ERR: 6, NO_MODIFICATION_ALLOWED_ERR: 7, NOT_FOUND_ERR: 8, NOT_SUPPORTED_ERR: 9, INUSE_ATTRIBUTE_ERR: 10, INVALID_STATE_ERR: 11, SYNTAX_ERR: 12, INVALID_MODIFICATION_ERR: 13, NAMESPACE_ERR: 14, INVALID_ACCESS_ERR: 15, VALIDATION_ERR: 16, TYPE_MISMATCH_ERR: 17, SECURITY_ERR: 18, NETWORK_ERR: 19, ABORT_ERR: 20, URL_MISMATCH_ERR: 21, QUOTA_EXCEEDED_ERR: 22, TIMEOUT_ERR: 23, INVALID_NODE_TYPE_ERR: 24, DATA_CLONE_ERR: 25, code: 19 })

这是因为我正在执行一个响应状态为 500 的请求,因为paramMap 未定义所以请求中没有id。

... 有任何想法吗?

谢谢,BR


将快照添加到 useValue 中,例如:

{
          provide: ActivatedRoute,
          useValue: {
            snapshot: {
              paramMap: convertToParamMap({
                id: '1'
              })
            }
          }
        }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Snapshot 和 ParamMap 的 Angular Mock ActivatedRoute 的相关文章

随机推荐

  • 怪异模式与 2011 年相关吗?

    随着IE9 FF4 不断更新的chrome等所有最新的浏览器 我们还需要怪异模式吗 如果有的话有什么用处 在什么场景下 Quirks 模式旨在允许 很多 较旧的网站在 相对 较新的浏览器中运行 新的开发永远不应该在 Quirks 模式下进行
  • ListView 图像的 onClick 侦听器 - Android

    我有一个ListView右侧有图像 我想表演一个onClick通过单击图像上的侦听器事件ListView 请参阅图片以供参考 我知道基本的OnClick监听器实现 但这对我来说似乎有点棘手 P 忘了说了 点击实际ListView将启动一项新
  • 使用 DbContext.Database.SqlQuery 在 EntityFramework 中进行预加载

    在 EF 4 中 我可以通过编写 sql 来预先加载导航属性吗DbContext Database SqlQuery or DbContext Set
  • 在 Mac OS 10.11 (El Capitan) 上使用 pfctl 转发端口

    我目前正在测试我的开发环境是否可以在即将推出的新 Mac OS 10 11 上运行 以及是否可以在发布后立即升级 在我的测试机器上 我当前正在运行 Beta Preview 3 一切似乎都运行良好 我只能得到pfctl转发我的端口 我使用
  • Angular 模板中的 Javascript 广告

    我正在尝试在 Angular 模板中呈现 Javascript 广告 但它不会显示 当他们将 Javascript 附加到 head 标签时 我找到了一些解决方案 但我希望将广告放置在我的 Html 正文内 中 这是一个笨蛋 https p
  • TestNG 选项未显示在 Eclipse 的 RunAs 选项中

    我在 Eclipse IDE 中使用 Maven 项目 并添加了一个 testng 依赖项
  • 如何使用网络浏览器在链接列表中导航?

    我有一个网址列表 我需要导航它们 如何确保每个 url 都会调用 DocumentCompleted 事件 我已经尝试创建许多线程并尝试使用单个线程 但应用程序仍然没有为每个 url 触发事件 DocumentCompleted 有没有办法
  • 如何在 Release() 上释放 NET COM 互操作对象

    我有一个用托管代码 C CLI 编写的 COM 对象 我在标准 C 中使用该对象 当 COM 对象被释放时 如何强制立即调用 COM 对象的析构函数 如果不可能 请调用 I have Release 在我的 COM 对象上调用 MyDisp
  • 通过 HTTPS 投放广告

    我知道不存在愚蠢的问题 但这是 您可以通过 adsense 或其他完全支持 https 的网站上的其他方式提供基于上下文的广告吗 Update 我们更新了 AdSense 广告代码 现在支持通过安全超文本传输 协议 HTTPS 网页上的安全
  • 使用jquery获取keyup位置[重复]

    这个问题在这里已经有答案了 可能的重复 如何获取文本区域中的插入符位置 如果我在 html textarea 控件中的任何位置键入 我需要获取 keyup 事件的当前位置 例如 Welcome to jQuery 所以我在 欢迎 之后有 表
  • 将本体与 Protege-OWL API 合并

    我使用 protege 创建了两个本体 并保存为 A owl B owl 我知道protege 4 0可以合并很多本体 我想使用protege owl API将本体A owl和B owl合并到C owl 但我不知道该怎么做 你可以帮帮我吗
  • 以最少的配置使用 Unity

    在工作中 我们经常使用Unity 它的工作非常出色 但是您使用它的次数越多 您的配置文件就会增长得越多 运行时问题也会增加得越多 并且您必须为每个测试项目重新创建统一配置的次数就越多 因此 我们最终得到了一个巨大的统一配置部分 必须在多个项
  • 在 Posix 中如何使用 dev_t 类型?

    我追求的是这种类型的含义以及什么接口可以使用它 Posix 规范中解释说dev t用于设备 ID 但是 对于路径所描述的任何对象 可以是文件 目录 fifo 或物理设备 来说 设备 id 意味着什么 例如 调用stat 应为您提供一个包含此
  • 将类添加到单击的元素

    我正在尝试向单击的元素添加一个类 有多个具有唯一 ID 的元素 因此我 不知道 元素的 ID 是什么 我可以使用以下代码的修改版本来实现此目的吗 Jquery document ready function this on click fu
  • 我如何在 iOS 5 中使用 CMDeviceMotion 获取设备的标题

    我正在使用陀螺仪开发 AR 应用程序 我使用了苹果代码示例公园 它使用旋转矩阵来计算坐标的位置 而且效果非常好 但现在我正在尝试实现一个 雷达 我需要根据设备航向来旋转它 我正在使用 CLLocationManager 标题 但它不正确 问
  • Angular ViewChildren 不会立即看到 ngFor 中的所有子级

    我有一个奇怪的行为 ViewChildren 对应于 ngFor 生成的子组件 ViewChildren 查询没有看到元素在数组中停留了很长时间 我所有的代码都在Plunker 打开控制台后查看 这是我的主要组成部分 Component s
  • XMLHttp请求超时

    如何为以下脚本添加超时 我希望它将文本显示为 时间到 var bustcachevar 1 bust potential caching of external pages after initial request 1 yes 0 no
  • Redis 获取大字符串很慢

    我是 Redis 的新手 所以如果这是一个愚蠢的问题 我深表歉意 我使用 Django 和 Redis 作为缓存 我正在腌制大约 200 个对象的集合并将其存储在 Redis 中 当我从 Redis 请求集合时 Django 调试工具栏通知
  • 带有固定包装器的引导网格 - 防止列堆叠

    正如标题所示 我正在尝试使用带有固定包装器的 Bootstrap 3 网格系统 但是 当我调整浏览器的大小时 即使包装器保持相同的大小 列也会堆积起来 顺便说一句 我正在使用版本 3 以便在移植网站后可以转向响应式布局 这是巨大的 而且我独
  • 使用 Snapshot 和 ParamMap 的 Angular Mock ActivatedRoute

    我正在使用这个 来自here constructor private heroService HeroService private activatedRoute ActivatedRoute ngOnInit const heroId t