1

我偶然发现了一个我无法解决的问题。我试图监视子模块方法,但收到错误消息,即 moduleSpy 不是间谍,并显示以下错误消息。该模块是一个 npm 包。

Error: <toHaveBeenCalled> : Expected a spy, but got undefined.

import * as module from 'package';
import { TOKEN } from 'injectionToken.ts'

describe('ExampleComponent', () => {
    let component: ExampleComponent;
    let fixture: ComponentFixture<ExampleComponent>;
    let moduleSpy;

    beforeEach(async(() => {
        moduleSpy = spyOn(module.sub, 'subModuleMethod');

        TestBed.configureTestingModule({
            declarations [ExampleComponent],
            providers: [
                { provide: TOKEN, useValue: module }
            ]
        }).compileComponents();
    }));

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

    it('test specific function call', () => {
        // press button to test the sub module method
        expect(moduleSpy.subModuleMethod).toHaveBeenCalled();
    });

})

有谁知道为什么间谍不被识别?

4

1 回答 1

0

你在 Angular/TypeScript 的早期版本上所做的工作,但在它的更高版本上却没有。

这是一个解释它的长线程:https ://github.com/jasmine/jasmine/issues/1414

这些是一些解决方案: webpack 4 模块可以配置为允许 Jasmine 监视其成员吗?

github线程有一些解决方案,但这些解决方案都不适合我。

我最喜欢的解决方案是这个:

错误:supportsScrollBehavior 未声明为可配置

于 2021-10-27T13:17:49.337 回答