【问题标题】:Mocking multiple calls模拟多个呼叫
【发布时间】:2021-04-07 15:53:18
【问题描述】:

我正在使用 ts-mock-imports,我想模拟一个函数调用的多个返回值,然后检查一个函数是否被调用了给定的次数。以下作品:

    const getUserSpy = dataServiceMock.mock('getUserFromDB')
                                      .returns({...USER_1})
                                      .returns({...USER_2});

在我的测试用例中,我对 getUserFromDB() 进行了两次调用,在上述情况下,getUserSpy.callCount 等于 2。但这取决于顺序,所以我宁愿能够执行以下操作:

    const getUser1Spy = dataServiceMock.mock('getUserFromDB')
                                      .withArgs(USER_1_ID).returns({...USER_1});
    const getUser2Spy = dataServiceMock.mock('getUserFromDB')
                                      .withArgs(USER_2_ID).returns({...USER_2});

我希望 getUser1Spy 被调用一次,而 getUser2Spy 被调用一次。但是,看起来第二次调用 withArgs() 删除了之前的模拟实例。

【问题讨论】:

    标签: javascript typescript unit-testing mocking


    【解决方案1】:

    这行得通:

    const getUserSpy = dataServiceMock.mock('getUserFromDB');
    getUserSpy.withArgs(USER_1_ID).returns({...USER_1});
    getUserSpy.withArgs(USER_2_ID).returns({...USER_2});
    
    // ... then ...
    
    assert(getUserSpy.callCount).equals(2);
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-22
      相关资源
      最近更新 更多