开玩笑检查是不是调用了函数[重复]

Posted

技术标签:

【中文标题】开玩笑检查是不是调用了函数[重复]【英文标题】:Jest check if function was called [duplicate]开玩笑检查是否调用了函数[重复] 【发布时间】:2021-12-11 16:31:54 【问题描述】:

我正在使用 Jest 来测试一些实用功能。

my_util.js:

export function myFunc(i) 
  if (i === 1)
    anotherFunc();
  

另一个_util.js:

export function anotherFunc(i) 
    console.log('in anotherFunc');

测试anotherFunc() 被调用的最简单方法是什么?这是我当前的单元测试,它失败了。有没有办法测试一个函数是否被它的名字调用?

import  myFunc  from './my_util.js'

...

  it('myFunc should call anotherFunc', () => 
    const anotherFunc = jest.fn();
    myFunc(1);
    expect(anotherFunc).toHaveBeenCalled();  
  );

结果:

Expected number of calls: >= 1
Received number of calls:    0

【问题讨论】:

anotherFunc 定义在哪里(在普通代码中)? anotherFunc 在单独的 .js 文件中定义。我已经更新了帖子以显示这一点。 请分享如何它是导入的?还是全球可用? 已添加导出和导入详细信息 好的,谢谢。这个答案在这里有效。 ***.com/a/40465435/8282103 【参考方案1】:

也许您应该只将anotherFunc 注入myFunc 作为参数,这将使测试更容易:

function myFunc(i, cb) 
  if (i === 1)
    cb();
  

  it('myFunc should call anotherFunc', () => 
    const anotherFunc = jest.fn();
    myFunc(1, anotherFunc);
    expect(anotherFunc).toHaveBeenCalled();  
  );

【讨论】:

以上是关于开玩笑检查是不是调用了函数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

用keil软件编辑时,总提示函数重复定义是怎么回事

开玩笑如何断言该函数未被调用

如何在python中检查字符串是不是为空[重复]

检查数组中的值(包括不是函数)[重复]

开玩笑单元测试检查唯一值

以 onsubmit 形式调用 ajax 函数 [重复]