开玩笑-如何避免将间谍用作吸气剂

时间:2019-11-11 11:47:34

标签: mocking jestjs

我有这个

jest.spyOn(store.customerData, "isValid", "get").mockReturnValue(true);

我想重构为使用像这样的典型jest.fn()模拟:

store.customerData.isValid = jest.fn().mockResolvedValue(true)

但是我收到一个错误消息,声称该属性是只读的。

1 个答案:

答案 0 :(得分:0)

检查方法的ObjectProperties

如果configurable属性设置为true,则可以尝试使用Object.defineProperty()

Object.defineProperty(store['customerData'], 'isValid', {writable: true});
// And then put your code
store.customerData.isValid = jest.fn().mockResolvedValue(true);

如果将其设置为false,恐怕没有任何解决方法。几个月前,我遇到了一个与您很接近的问题(我没有解决),我问了一个问题,您可以检查一下我尝试过的内容,看看是否有任何适合您的方法:Override Object Property for unit testing purposes

相关问题