微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 如何让Jasmine的spyOnProperty工作?

我看到了this post的帖子,并很高兴尝试一下,但我无法让它工作.试图保持这个简单只是为了弄清楚什么是错的,但即使这样也是失败的.

export class SomeService {
...
private _myValue: Boolean = false;
get myValue(): Boolean {
    return this._myValue;
}
set myValue(helper: Boolean) {
    this._myValue = helper;
}

在我的单元测试中,我有

 it('should ', inject([SomeService], (someService: SomeService) => {         
    let oldValue = someService.myValue;    
    expect(oldValue).toBe(false); // passes, clearly we can use our getter
    someService.myValue = true;    
    expect(someService.myValue).toBe(true); // passed, clearly the setter worked

    spyOnProperty(someService, 'myValue', 'getter').and.returnValue(false); // Property myValue does not have access type getter

    //spyOnProperty(someService, 'myValue', 'get').and.returnValue(false);same error if tried this way

    expect(someService.myValue).toBe(false);
 }));

我把值放在最上面以清楚地显示我可以得到并设置值.这没有问题. Wallaby显示ReferenceError:未在spyOnProperty行上定义spyOnProperty.我不确定这是否有帮助,但我上面提到的错误是当我运行这些测试时业力给我的.

任何人都有这个工作,我非常感谢你的帮助.对于任何错别字道歉,我一直在大部分时间都在盯着这个.

解决方法:

好吧,我花了更多的时间在这上面然后我愿意承认,但答案最终是一个简单的语法错误

用作第三个参数的正确值是get,而不是像以前那样得到getter.例如:

spyOnProperty(someService, 'myValue', 'get').and.returnValue(false)

我早期尝试过,但当时没有工作.我不确定是什么改变了.我还将@ types / jasmine以及我的开发库中的其他内容更新为@latest,但之后我没有重新启动IDE,因为我认为这不重要.我只能猜测这就是它现在有效的原因.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐