#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 ). Это пахнет так, как будто он пытается прочитать файл, но у него нет подходящей ссылки на файл для работы.