试图模拟ES6类,只是为了得到一个我可以窥探的虚拟模拟。我的代码似乎非常接近文档,但在我的虚拟对象上调用.mock
时出现此错误:
TypeError:无法读取未定义
的属性“实例”
jest.mock('../../../adapters/Cache')
const Fizz = require('../Fizz')
const Cache = require('../../../adapters/Cache')
const fizz = new Fizz()
describe('CACHE', () => {
it('should return a mock', () => {
//This is the line that fails
const mockCache = Cache.mock.instances[0]
const mockRetrieveRecords = mockCache.retrieveRecords
fizz.doStuff()
expect(mockRetrieveRecords).toHaveBeenCalledTimes(1)
})
})
答案 0 :(得分:0)
jest.mock('../../../adapters/Cache')
将使用undefined
模拟模块。要模拟返回类的模块,您可以创建一个模拟,它只返回一个返回模拟实例的函数。要设置retrieveRecords
你可以在测试中访问的间谍,你必须用空间谍模拟模块,导入它并设置真正的模拟:
jest.mock('../../../adapters/Cache', () => jest.fn())
const Cache = require('../../../adapters/Cache')
const Fizz = require('../Fizz')
const retrieveRecords = jest.fn()
Cache.mockImplementation(() => ({retrieveRecords})
describe('CACHE', () => {
it('should return a mock', () => {
const fizz = new Fizz()
fizz.doStuff()
expect(retrieveRecords).toHaveBeenCalledTimes(1)
})
})