【问题标题】:Angular Unit Tests - how to mock router.urlAngular 单元测试 - 如何模拟 router.url
【发布时间】:2018-11-24 12:11:30
【问题描述】:

我有一个 Angular 6 应用程序,我正在尝试对注入路由器的组件进行单元测试。在我的 ngOnInit 方法中,我引用 this.router.url 并使用它。

所以现在我正在尝试编写一个 jasmine 单元测试,但我无法设置 router.url 属性,因为它“是一个常量而非只读属性”。我目前正在像这样嘲笑路由器。

mockRouter = jasmine.createSpyObj<Router>("router", ["navigate", "navigateByUrl"]);

我还需要设置什么才能在我的测试中正确模拟 url 值?

【问题讨论】:

    标签: unit-testing jasmine angular6


    【解决方案1】:

    茉莉探属性应该是合理的解决办法

    spyOnProperty(router, 'url', 'get').and.returnValue('/users');
    

    这里推荐 https://stackoverflow.com/a/43793575/11552394

    并记录在 Jasmine 文档中 https://jasmine.github.io/api/3.4/global.html#spyOnProperty

    【讨论】:

    • 我收到 url 属性不存在错误。注意:url 是一个只读属性,它对 spyOnProperty() 的行为有影响吗?
    猜你喜欢
    • 1970-01-01
    • 2019-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    • 2020-06-19
    • 2021-09-18
    • 1970-01-01
    相关资源
    最近更新 更多