【问题标题】:How can I prevent execution of function when I expect that function to have been called in jest?当我期望该函数被开玩笑地调用时,如何防止函数执行?
【发布时间】:2020-12-06 11:15:49
【问题描述】:
export function abc(){
         a();
}
export function a(){
     b();
}
export function b(){
 //do some tasks
}
import * as p from './filename'
it('a should call b',()=>{
 spyOn(p,'b');
 p.a();
 expect(p.b).toHaveBeenCalled();
);

当我尝试执行此测试用例时,它也尝试执行 b 函数并失败。我只是希望它应该调用 b 函数。我怎样才能做到这一点?

【问题讨论】:

    标签: unit-testing jestjs jasmine


    【解决方案1】:

    尝试添加 mockImplementation

    // 我正在模拟 b 函数并将 o 作为 b() 的 o/p 返回

    const spyB = jest.spyOn(p, 'b').mockImplementation(0 as any);  
    p.a();
    expect(spyB).toHaveBeenCalled();  
    spyB.mockClear();
    

    【讨论】:

    • 它说的预期通话次数 => 1
    • 接听电话数 => 0
    • 其实就是这个函数没有被调用
    • 是的,但我们希望它被调用,而且当我调试它时,它会进入那个函数
    • 是否执行了原始功能?请检查o/p。它不应该
    猜你喜欢
    • 2018-05-22
    • 2019-09-25
    • 1970-01-01
    • 2019-10-27
    • 1970-01-01
    • 1970-01-01
    • 2018-12-07
    • 1970-01-01
    • 2018-12-27
    相关资源
    最近更新 更多