我看到了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/