Jasmine 监视 RxJS 5.5 操作员

2024-04-05

我正在尝试使用 Jasmine 监视 RxJS 操作员。在我的测试中有不同的用例,我希望控制 Observable 返回的内容。为了说明我正在尝试做的事情,我创建了上面的示例,尽管我认为它没有多大意义,因为此可观察值总是返回相同的硬编码字符串。无论如何,这是一个很好的例子来展示我想要实现的目标:

想象一下我有以下课程。

import {Observable} from 'rxjs/Observable';
import {of} from 'rxjs/observable/of';

export class AwesomeTest {

   constructor() {
   }

   getHero(): Observable<string> {
      return of('Spiderman');
   }
}

以及以下测试:

import {AwesomeTest} from './awesomTest';
import {of} from 'rxjs/observable/of';
import createSpyObj = jasmine.createSpyObj;
import createSpy = jasmine.createSpy;

describe('Awesome Test', () => {

  let sut;

  beforeEach(() => {
    sut = new AwesomeTest()
  })

  fit('must be true', () => {
    // given
    const expectedHero = 'Superman'
    const asserter = {
        next: hero => expect(hero).toBe(expectedHero),
        error: () => fail()
    }
    createSpy(of).and.returnValue(of('Superman'))
    // when
    const hero$ = sut.getHero()
    // then
    hero$.subscribe(asserter)
  });
});

我尝试监视 Observable of 运算符,并返回一个 Observable,其值是我在测试中指定的值,而不是它返回的实际值。我怎样才能实现这个目标?

在新的 Rx 导入语法之前,我能够执行如下操作:

spyOn(Observable.prototype,'switchMap').and.returnValue(Observable.of(message))


在您的规范文件中,所有内容都作为通配符(不用担心树摇动,这仅用于测试)

import * as rxjs from 'rxjs';

然后你可以使用 rxjs 进行间谍活动

spyOn(rxjs, 'switchMap').and.returnValue(rxjs.of(message))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jasmine 监视 RxJS 5.5 操作员 的相关文章

随机推荐