[RxJS] Marbles Testings
Install:
npm install — save-dev jasmine-marbles
Basic example:
import {cold, getTestScheduler} from 'jasmine-marbles'; import 'rxjs/add/operator/concat'; describe('Test', () => { it('concat', () => { const one$ = cold('x-x|'); const two$ = cold('-y|'); expect(one$.concat(two$)).toBeObservable(cold('x-x-y|')); }); });
Advanced example:
import { MovieShowingsComponent } from './movie-showings.component'; import { cold, getTestScheduler } from 'jasmine-marbles'; describe('MovieShowingsComponent', () => { it('should not have a race condition', () => { const backend = jasmine.createSpyObj('backend', ['getShowings']); const cmp = new MovieShowingsComponent(backend); backend.getShowings.and.returnValue(cold('--x|', {x: ['10am']})); cmp.selectMovie('After the Storm'); backend.getShowings.and.returnValue(cold('-y|', {y: ['11am']})); cmp.selectMovie('Paterson'); // this will flush all observables getTestScheduler().flush(); expect(cmp.movieTitle).toEqual('Paterson'); expect(cmp.showings).toEqual(['11am']); // This will fail because showings is ['10am']. }); });
Component:
@Component({ selector: 'movie-showings-cmp', templateUrl: './movie-showings.component.html' }) export class MovieShowingsComponent { public movieTitle: string; public showings: string[]; private getShowings = new Subject<string>(); constructor(private backend: Backend) { this.getShowings.switchMap(movieTitle => this.backend.getShowings(movieTitle)).subscribe(showings => { this.showings = showings; }); } showShowings(movieTitle: string) { this.movieTitle = movieTitle; this.getShowings.next(movieTitle); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2016-10-31 [Angular2Fire] Firebase auth (Google, Github)