尝试模拟 ES6 类,只是为了获得一个我可以监视的虚拟模拟。我的代码似乎非常严格地遵循文档,但是在调用.mock我的虚拟对象时出现此错误:
类型错误:无法读取未定义的属性“实例”
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)
})
})
Run Code Online (Sandbox Code Playgroud)
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)
})
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18652 次 |
| 最近记录: |