【问题标题】:Angular 10 | ngrx Effects | Unit Tests | Cannot call a class as a function角 10 | ngrx 效果 |单元测试 |不能将类作为函数调用
【发布时间】:2020-11-06 12:43:13
【问题描述】:

将 Angular 项目升级到 Angular 10 后,ngRx 效果单元测试开始中断。以下是升级后的错误:

遇到同样的问题,请按照解决方案。

谢谢,

【问题讨论】:

    标签: angular ngrx ngrx-effects angular-unit-test angular10


    【解决方案1】:

    希望有一天这对某人有用。

    经过几个小时的调试和搜索,找到了问题的根本原因。

    当tsconfig.base.json 中的target 设置为ES5 时会出现此问题。

    默认情况下,Angular 10 使用 ES2015 的设置搭建脚手架,它可以正常工作。但是,该解决方案不适用于旧版浏览器,即。 IE11。

    我们如何将目标设置为ES5,以便项目在 IE 中运行并通过单元测试?

    嗯,解决方法很简单。

    只需将tsconfig.spec.json 中的目标设置设置为ES2015(定义如下),而不更改基础tsconfig 中的任何配置。这对我来说就像魅力一样,项目使用ES5 设置编译生成器,单元测试在ES2015 设置下运行良好。

    {
      "extends": "./tsconfig.base.json",
      "compilerOptions": {
        "outDir": "./out-tsc/spec",
        "types": ["jasmine"],
        "target": "ES2015"
      },
      "files": ["src/test.ts", "src/polyfills.ts"],
      "include": ["src/**/*.spec.ts", "src/**/*.d.ts"]
    }
    

    输出:

    愉快的编码和调试:-)

    谢谢,

    【讨论】:

    • 这可能会阻止在 IE11 中运行测试?知道如何存档吗?
    • 非常感谢库马尔先生!你知道这个问题是否已经被报告了吗?能够以 ES5 为目标运行这些测试会很棒。干杯
    • @carlesgg97 谢谢。抱歉,没有关于这是否已被记录为错误的信息。
    • @ManishKumar 我在 rxjs GitHub 存储库 (github.com/ReactiveX/rxjs/discussions/5976) 上创建了一个讨论。如果您认为合适,请随时访问它或添加任何 cmets。干杯
    【解决方案2】:

    在我的项目中,这是由使用 TestScheduler.run 引起的 - 如此变化

    it('should test some observable', () => {
        const scheduler = new TestScheduler((actual, expected) => expect(actual).toEqual(expected));
        scheduler.run(helpers => {
            const testObservable$ = getYourTestObservable();
            helpers.expectObservable(testObservable$).toBe('(a)', {a: 'some value'});
        });
    });
    

    到

    it('should test some observable', fakeAsync(() => {
        const testObservable$ = getYourTestObservable();
        expect(testObservable$).toBeObservable(cold('(a)', {a: 'some value'}));
    }));
    

    解决了这个问题(不改变编译目标)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-15
      • 1970-01-01
      • 2022-01-15
      • 2021-02-24
      • 2022-01-22
      • 1970-01-01
      • 2013-02-14
      相关资源
      最近更新 更多