被测函数中的while循环仅在Jest中执行一次

时间:2020-06-18 10:04:59

标签: javascript node.js testing while-loop jestjs

当我尝试调用方法时,该方法中的while循环仅执行一次,而不是给定的5次。有解决办法吗?

ProfileService

这是我的考验

//mock.js

const TestModel = require('src/models/testModel')

const mockFunction = async (id) => {
    let i = 0
    while(i < 5){
        console.log(i)
        const response = await calledFunction(id)
        return response
        i = i + 1
    }
}

const calledFunction = async(id) => {
    console.log(id)
    const testModels = await TestModel.findById({ id })
    return testModels
}
module.exports = {
    mockFunction
}

我在这里使用了模拟来返回模拟响应,我对此没有任何问题。在上述情况下,while循环应该执行5次,但是一旦执行一次,测试就会停止。测试有问题吗?我应该更改mock.js还是mock.test.js吗?

我是node.js的新手,我们将为您提供任何帮助。 提前致谢。

2 个答案:

答案 0 :(得分:2)

在while循环中使用return会中断循环,因此在循环的第一次迭代中,您将退出循环。因此您应该避免在循环中使用return

答案 1 :(得分:-1)

return response应该在while循环之外,但仍在模拟函数中。

return语句中断了循环。

const mockFunction = async (id) => {
    let i = 0
    while(i < 5){
        console.log(i)
        const response = await calledFunction(id)
        i = i + 1
    }
  return response;
}
相关问题