在Sinon,我可以做以下事情:
var myObj = {
prop: 'foo'
};
sinon.stub(myObj, 'prop').get(function getterFn() {
return 'bar';
});
myObj.prop; // 'bar'
但是如何对Jest执行同样的操作呢?我不能用类似jest.fn()
的代码覆盖函数,因为它不会替换getter
“无法设置get的值”
在Sinon,我可以做以下事情:
var myObj = {
prop: 'foo'
};
sinon.stub(myObj, 'prop').get(function getterFn() {
return 'bar';
});
myObj.prop; // 'bar'
但是如何对Jest执行同样的操作呢?我不能用类似jest.fn()
的代码覆盖函数,因为它不会替换getter
“无法设置get的值”
4条答案
按热度按时间dy1byipe1#
对于任何其他偶然发现这个答案的人来说,Jest 22.1.0引入了监视getter和setter方法的能力。
编辑:就像下面的scieslak's answer一样,因为你可以监视getter和setter方法,所以你可以对它们使用Jest模拟,就像对其他函数一样:
k10s72fa2#
您可以使用
Object.defineProperty
7uhlpewt3#
如果你只关心间谍活动,那就去找@Franey的答案。但是,如果你真的需要为getter存根一个值,你可以这样做:
dgsult0t4#
在我的unity测试用例中,因为它被期望模仿外部依赖关系,按照thomaux的回答,我不得不在beforeEach函数中使用一真实的示例而不是一个模仿的示例,参见下面的代码片段。