【问题标题】:Angular 2 Jasmine tests for an ObservableAngular 2 Jasmine 测试 Observable
【发布时间】:2017-08-17 08:40:31
【问题描述】:

我正在测试一个调用服务的组件。我想存根或模拟服务,以便它返回一个布尔值,并且订阅函数的回调/成功函数中的组件变量设置为这个模拟的布尔值。因此,在我的组件中,从我的组件中调用了 welcomeService 中的 getBusinessDetails 方法,这就是我遇到问题的地方。我希望isReturning值被伪造,然后设置相应的组件变量。它返回 Expecte 未定义为真。

 public getBusinessDetails(): void {
        this.welcomeService.getBusiness(this.businessId, 2017)
            .subscribe((isReturning) => {
                this.isReturningApplicant = isReturning;
                this.welcomeMessage = this.isReturningApplicant ? 'Welcome Back' : 'Welcome';
            });
    }


TestBed.configureTestingModule({
            declarations: [WelcomeComponent],
            imports: [ReactiveFormsModule],
            providers: [{ provide: SessionService, useValue: sessionServiceStub },
            { provide: WelcomeService, useValue: welcomeServiceStub }]
        });

describe('Gets  details', () => {
        beforeEach(() => {
            sessionServiceStub = {
                getSession: function () { return { businessId: 11111, agentId: 11111 } }
            }
            welcomeServiceStub = {
                getBusiness: function () { return { subscribe: () => Observable.of(true) } }
            };
        })

        it('get a returning customer', () => {
            component.ngOnInit();
            expect(component.isReturningApplicant).toBe(true);

        });

    })

【问题讨论】:

    标签: angular typescript jasmine


    【解决方案1】:

    只要让它返回不带subscribe的可观察对象

    getBusiness: function () { return Observable.of(true) }
    

    返回的Observablesubscribe 方法

    getBusiness().subscribe()
    

    getBusiness 返回Observable,然后您将调用更改为Observable.subscribe

    【讨论】:

    • 超级,你的救星和天才!
    • 如果我有一个套件描述正在更改值,即将变量设置为 false,这会导致问题吗?@peeskillet
    • 不太清楚你的意思
    • 在每次更改变量的值之前,如果我在每个设置不同的值之前有另一个描述,我注意到这会产生影响。这是因为测试是异步运行的吗?
    • 最好只使用spy和spy方法并从spy返回Observable
    猜你喜欢
    • 2017-07-23
    • 1970-01-01
    • 2018-01-22
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-05
    • 1970-01-01
    相关资源
    最近更新 更多