我正在尝试使用rxjs进行单元测试。我在rxjs github上找到了这个文档。
https://github.com/ReactiveX/rxjs/blob/master/doc/writing-marble-tests.md
但是,我没有成功找到hot
和cold
运营商。在哪里可以找到它?如果有人有一个例子,我会很高兴。
答案 0 :(得分:0)
您使用什么框架进行测试?如果您使用jasmine,则会有一个名为jasmine-marbles
的npm包,这可能就是您要搜索的内容。还有另一个名为rxjs-marbles
的包,它提供了大理石测试的实用程序。
您可以在此处查看jasmine-marbles
的示例:https://github.com/ngrx/platform/blob/master/docs/effects/testing.md
这里有一个rxjs-marbles
:https://www.npmjs.com/package/rxjs-marbles
答案 1 :(得分:0)
在提出问题时,请使用文档was scarce。但是后来又进行了更新,增加了使用TestScheduler编写测试的功能,并且它是新的run()
方法。
因此,基于新的documentation,建议使用TestScheduler.run(callback)
方法进行大理石测试。例如
import { TestScheduler } from 'rxjs/testing';
const testScheduler = new TestScheduler((actual, expected) => {
// asserting the two objects are equal
// e.g. using chai.
expect(actual).deep.equal(expected);
});
// This test will actually run *synchronously*
it('generate the stream correctly', () => {
testScheduler.run(helpers => {
const { cold, expectObservable, expectSubscriptions } = helpers;
const e1 = cold('-a--b--c---|');
const subs = '^----------!';
const expected = '-a-----c---|';
expectObservable(e1.pipe(throttleTime(3, testScheduler))).toBe(expected);
expectSubscriptions(e1.subscriptions).toBe(subs);
});
});
在此示例中,当调用run
方法时,应将callback
对象作为接收参数传递helpers
函数。 helpers
对象包含您需要的所有内容(以及hot
和cold
运算符):
testScheduler.run(helpers => {
const { cold, hot, expectObservable, expectSubscriptions, flush } = helpers;
// use them
});
有关更多信息,请阅读official docs。