我看到了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);
 }));

我将这些值放在最上面来清楚地表明我可以获取并设置该值。那没有问题。小袋鼠显示ReferenceError:spyOnProperty行上未定义spyOnProperty。我不确定这是否有帮助,但是我上面所说的错误是运行这些测试时业力给我的。

任何使它起作用的人,我将非常感谢您的帮助。对于任何错别字表示歉意,我整天大部分时间都在盯着它看。

最佳答案

好吧,我花了更多时间在此上,然后我才想承认,但是答案最终是一个简单的语法错误:

用作第三个参数的正确值是get,而不是我以前使用的getter例如:

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

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

关于javascript - 如何使Jasmine的spyOnProperty工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43928209/

10-11 07:19