Ich führe Unit Tests mit Karma-Jasmin, Webpact. Ich habe versucht, einen Datensatz in einer MySQL-Datenbank mit Bücherregal einzufügen. I erhielt die folgende Fehlermeldung:ReferenceError: Bücherregal ist nicht definiert
Reference: Bücherregal nicht bei module.exports.addCategoryWithProducts definiert (app_serv/order/test/order.util.spec.js: 94215: 2) am Gegenstand. (app_serv/order/test/order.util.spec.js: 94059: 3) bei ContextKarma.loaded (http://localhost:9876/context.js:151:12) TypeError: Kann die Eigenschaft 'then' von undefined bei Object nicht lesen. (App_serv/order/test/order.util.spec.js: 94074: 4)
Typeerror: _this.driver.createConnection ist keine Funktion
Mein Code:
var knex = require('knex')({
client: 'mysql',
connection: {
host : 'localhost',
user : 'user1',
password : 'toto',
database : 'totoDb',
charset : 'utf8'
}
});
module.exports = require('bookshelf')(knex);
module.exports.addCategoryWithProducts = function(categoryToAdd) {
bookshelf.transaction(function(t) {
var products = categoryToAdd.products;
var tableProd = [];
//if (!req.params.idCategory || req.params.idCategory ==0) {
Category.forge({
name: categoryToAdd.name,
code: categoryToAdd.code,
tax_percentage: categoryToAdd.tax_percentage,
description: categoryToAdd.description
})
.save(null, { transacting: t })
.then(function(category) {
for (var i = 0; i < products.length; i++) {
tableProd.push({
barcode: products[ i ].barcode,
cip_13: products[ i ].cip_13,
category_id: category.id,
quantity: products[ i ].quantity,
retail_price: products[ i ].retail_price,
description: products[ i ].description,
name: products[ i ].name,
inn: products[ i ].inn,
kind: products[ i ].kind,
comment: products[ i ].comment,
status: products[ i ].status,
critical_threshold: products[ i ].critical_threshold,
max_threshold: products[ i ].max_threshold,
date_end: products[ i ].date_end
});
}
Products.forge(tableProd)
.invokeThen('save', null, { transacting: t })
.then(function(products) {
//console.log('inside insert of collection '+ JSON.stringify({category : category.toJSON(), produits: products}))
//res.json({error : false, data: {category : category.toJSON(), products: products}});
t.commit();
return Promise.resolve(category.related('products'));
})
.catch(function(err) {
return Promise.reject(err.message);
//console.log('Erreur dans Products.forge: ' + err.message);
res.status(500)
.json({ error: true, code: err.code, message: err.message });
})
})
.catch(function(err) {
return Promise.reject(err.message)
//console.log('Erreur dans Products.forge: ' + err.message);
//res.status(500).json({error: true, code : err.code, message: err.message});
})
});
}
UNIT Testcode:
it("addCategoryWithProducts", function(done){
addCategoryWithProducts(categoryMock)
.then(function(catWithPrds){
expect(catWithPrds).toBeDefined();
expect(catWithPrds.products).toBeDefined();
expect(catWithPrds.products.length).toBe(3);
})
);
nach dem vergeblichen viele Lösungen versucht, entschied ich mich für Ihre Hilfe zu bitten .
Ihr Code unvollständig aussieht. Wo und wie ist 'Bücherregal' definiert? Und es sieht so aus, als würde der Code bis 'require ('bookshelf') (knex);' zu einer anderen Quelldatei gehören. – flaviodesousa
Ja, es ist in einer anderen Datei. Ich glaube nicht, dass das Problem da ist. – Evabila
Vielleicht nicht, aber Ihr Fehler erwähnt ausdrücklich, dass "Bücherregal" nicht definiert ist. Der erste Gedanke, den jemand sehen würde, ist wo und wie er definiert ist. Es könnte helfen, wenn Sie die Codesegmente korrekt teilen. – flaviodesousa