我有一个名为fnCreater
的函数,它创建了另一个函数:
const fnCreater = (page, extraCondition = false) => () => {
if (extraCondition) return;
ViewStore.setCurrentPage = page;
}
我希望能够测试返回的函数是否被调用:
describe('test', () => {
it('should return a function', () => {
const fn = fnCreater('CONFIGURATOR')
expect(typeof fn).toBe('function')
})
it('should be able to execute the function from the closure', () => {
const fn = fnCreater('CONFIGURATOR')
// const spy = jest.spyOn(fn) // needs a 'module'
fn();
expect(fn).toHaveBeenCalled()
})
})
我对jest不太熟悉,但是测试返回了这个错误:
Matcher error: received value must be a mock or spy function
Received has type: function
Received has value: [Function anonymous]
我不明白如何修复这个错误,也不明白为什么错误会声明需要spy或mock-- spyOn需要一个对象,mock需要一个模块。fnCreater
函数本身返回另一个函数(fn
),我想确定 * 那个 * 封闭函数是否被调用过。
1条答案
按热度按时间xzv2uavs1#
您是否正在尝试测试fnCreater或调用它的代码?
如果您正在测试fnCreter本身,则不应嘲笑它。
我建议调用fnCreater,然后调用返回的Function并Assert设置了正确的页面。