Javascript 如何得到茉莉花';什么是间谍财产?
我看到了这篇文章,很高兴尝试一下,但我无法让它工作。试图保持简单只是为了找出问题所在,但即使这样也失败了Javascript 如何得到茉莉花';什么是间谍财产?,javascript,angular,unit-testing,jasmine,karma-jasmine,Javascript,Angular,Unit Testing,Jasmine,Karma Jasmine,我看到了这篇文章,很高兴尝试一下,但我无法让它工作。试图保持简单只是为了找出问题所在,但即使这样也失败了 export class SomeService { ... private _myValue: Boolean = false; get myValue(): Boolean { return this._myValue; } set myValue(helper: Boolean) { this._myValue = helper; } 在我的单元测试中,我有: it
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,因为我认为这无关紧要。我只能猜测这就是为什么它现在起作用的原因 我仍在努力使
设置
正常工作
const foo = {
get value() {},
set value(v) {}
};
it('can spy on getters', () => {
spyOnProperty(foo, 'value', 'get').and.returnValue(1);
expect(foo.value).toBe(1);
});
it('and on setters', () => {
const spiez = spyOnProperty(foo, 'value', 'set');
foo.value = true;
expect(spiez).toHaveBeenCalled();
});
这实际上是我链接的帖子。这在Phantomjs中对我不起作用。它到处都能用吗