в то время как l oop в тестируемой функции выполняется только один раз в Jest - PullRequest
0 голосов
/ 18 июня 2020

Когда я пытаюсь вызвать метод, while l oop в методе выполняется только один раз вместо заданных 5 раз. Есть ли решение этой проблемы?

//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
}

И это мой тест

//mock.test.js

const mongoose = require('mongoose')

const { mockFunction } = require('./mock')
const TestModel = require('src/models/testModel')

jest.setTimeout(75000);

TestModel.findById = jest.fn()

TestModel.findById = jest.fn().mockReturnValue({
    _id: '5dbff32e367a343830cd2f49',
    name: 'Label',
    __v: 0
})

test('mock test', async () => {
    mockFunction(new mongoose.Types.ObjectId())
        .then(function (result) {
            console.log(result)
        })
})

Я использовал макеты здесь, чтобы вернуть фиктивный ответ, и у меня нет с ним проблем . Предположительно, while l oop должен выполняться 5 раз в приведенном выше случае, но тест останавливается, как только он выполняется только один раз. Есть проблемы с тестом? Должен ли я изменить mock. js или mock.test. js?

Я новичок ie в node.js, и любая помощь будет оценена. Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 18 июня 2020

с использованием return в то время как l oop разбивает l oop, поэтому во время первой итерации вашего l oop вы выходите из l oop. поэтому вам следует избегать return в вашем while l oop.

0 голосов
/ 18 июня 2020

return response должно находиться за пределами while l oop, но все еще внутри функции mockFunction.

Оператор return разбивает l oop.

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