【问题标题】:How can I unit test if certain website has been opened using Karma - Jasmine?如果某个网站已使用 Karma - Jasmine 打开,我如何进行单元测试?
【发布时间】:2021-08-01 12:15:05
【问题描述】:

我有一个组件列表,其中一些带有“因素”属性,而另一些带有“快速支付”属性。

我为他们创建了几个 getter:

get hasFactor(): boolean {
    return this.load.factor;
}
get hasQuickpay(): boolean {
    return this.load.quickpay;
}

然后创建了一个函数,该函数根据“因素”或“快速支付”是否为true(如果其中一个是true,另一个是false)打开某个URL。

visitPage(){
    if(this.hasFactor){
        this.trackLink(SearchSharedTracking.goToFactor,this.Factor);
        window.open('https://www.spacepln.com/factor/ ','_blank');
    }else{
        this.trackLink(SearchSharedTracking.goToQuickpay,this.Quickpay);
        window.open('https://www.spacepln.com/quickpay','_blank');
    }
}

在我的 .spect 文件中,我必须使用 Karma - Jasmine 测试是否打开了因子页面或打开了快速支付。我被卡住了,不知道如何为此编写单元测试。

【问题讨论】:

标签: angular unit-testing jasmine karma-jasmine


【解决方案1】:

您可以监视 window.open 以测试根据您指定的条件打开哪个 URL。这些测试应该有效。

    it('shout open factor page', () => {
        spyOn(window, 'open');
        component.hasFactor = true;
        visitPage(false);        
        expect(window.open).toHaveBeenCalledWith('https://www.spacepln.com/factor/','_blank')
    });

    
    it('shout open quickpay page', () => {
        spyOn(window, 'open');
        component.hasFactor = false;
        visitPage(false);        
        expect(window.open).toHaveBeenCalledWith('https://www.spacepln.com/quickpay','_blank')
    });

【讨论】:

  • 我抛出错误,我无法在此处将“true”或“false”分配给 hasFactor:component.hasFactor = false;因为它是只读属性。也许是因为它是吸气剂?我该如何解决这个问题?谢谢。
  • 你可以监视你的 getter 函数并返回一个像这样的自定义值 - spyOn(component, 'hasFactor').and.returnValue(true);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-20
  • 1970-01-01
  • 1970-01-01
  • 2016-04-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多