Тест не выполняется, он выдает ошибку

#node.js #testing #mocha.js #chai

#node.js #тестирование #mocha.js #чай

Вопрос:

Я тестирую добавление продуктов, я хочу добавить 10 продуктов, для этого я использую https://www.npmjs.com/package/multer библиотека.

Мой тест:

 describe('Test products', () => {
    describe('POST /api/products/add', () => {
        it(`Should create ${addProductCount} products with 0...1000 price`, (done) => {
            let operationCount = addProductCount;
            for (let i = 0; i < addProductCount; i  ) {
                let product = utils.getFakeProduct(2, 1000);
                chai
                    .request(server)
                    .post('api/products/add')
                    .set('token', constants.merchantToken)
                    .field(product)
                    .attach('product_photos', './test/path/products/test1.jpeg', 'test1.jpeg')
                    .attach('product_photos', './test/path/products/test2.jpg', 'test2.jpg')
                    .attach('product_photos', './test/path/products/test3.png', 'test3.png')
                    .end((err, res) => {
                        operationCount--;
                        expect(res).have.status(200);
                        expect(res.body).have.property('message');
                        expect(res.body.message).to.be.equal('Product added');
                        if (operationCount == 0) {
                            done();
                        }
                    });
            }
        });
    });
});

...

function getFakeProduct(lowerPrice, upperPrice) {
    let currentDate = faker.date.recent();
    let expirationDate = faker.date.recent( 1);
    let original_price = getRandomInt(lowerPrice, upperPrice);
    return {
        product_name: faker.commerce.productName(),
        product_description: `${faker.commerce.productAdjective()} ${faker.commerce.productAdjective()}`,
        original_price,
        sale_price: original_price - getRandomInt(lowerPrice, original_price - 1),
        starting_date: currentDate,
        end_date: expirationDate,
        quantity_available: faker.random.number(50),
        categories: 'HOME APPLIANCES',
    };
}
  

При выполнении тестов я получаю сообщение об ошибке:

TypeError: source.on не является функцией

в функции.DelayedStream.create (node_modulesdelayed-streamlibdelayed_stream.js:33:10)
в FormData.CombinedStream.append (node_modulescombined-streamlibcombined_stream.js:44:37)
в FormData.append (node_modulesform-datalibform_data.js :74:3)
в Test.RequestBase.field (node_modulessuperagentlibrequest-base.js:406:23)
в Test.RequestBase.field (node_modulessuperagentlibrequest-base.js:387:12)
в Context.field (test/productsTest.js:53:22)
в process.topLevelDomainCallback (domain.js:120:23)

В чем моя проблема? Я не использую эту функцию.

Комментарии:

1. Похоже, что-то нужно высмеять. github.com/request/request-promise/issues/145

2. @reergymerej Извините, я попробовал, и это мне не помогло. В чем может быть моя проблема?

3. Попытайтесь точно определить, какая строка вызывает это. Как только вы это узнаете, найдите ошибку в Google и ознакомьтесь с проблемами. Это может быть много вещей. Если вы получите более подробную информацию, пожалуйста, обновите здесь.

4. @reergymerej Это происходит после .field (product) , но почему это происходит, я не могу понять

5. Какое значение product ? Если вы удалите эту строку, будет ли выполняться тест? Многие из этих проблем указывают на неправильные formdata ( github.com/request/request/issues/1495 ). Это пахнет так, как будто он пытается прочитать файл, но у него нет подходящей ссылки на файл для работы.