Jest test error: ...subscribe is not a function

Jest test error: ...subscribe is not a function

我正在使用 Jest 测试我的 Angular 应用程序(使用 Nx 工作区)。我有一个组件使用我试图模拟的服务。这是代码:

myDummyService.permissions$.subscribe(permission => return // whatever);

在我的测试中,我模拟了这样的服务:

myDummyServiceMock = {permissions$: jest.fn()}

但是当测试运行并调用构造函数时,出现以下错误:

`myDummyService.permissions$.subscribe is not a function`

我无法模拟订阅功能,那么我该如何解决这个错误呢?我试过了,但我觉得不对:

myDummyServiceMock = {permissions$: jest.fn(), subscribe: jest.fn()}

如果我这样做就可以了,但它是不是格式不对?

myDummyServiceMock = {permissions$: of(true)}

首先permission$是一个属性,不是一个函数,其次,它应该是一个observable。因此,应该正确定义它,例如在 rxjs.

EMPTY 的帮助下
myDummyServiceMock = {permissions$: EMPTY};

现在有subscribepipe等方法

如果你想操纵它的发射,你可以使用 Subject 实例而不是 EMPTY