Es gibt ein seltsames Verhalten in einem Argument in einem globalen Javascript-Objekt: Ich muss meinen Code mit jasmine.js testen, aber ich kann nicht den erwarteten Wert an das Argument übergeben gib immer undefiniert im Jasmintest zurück.Seltsames Verhalten in JavaScript-Argument in einem globalen Objekt
//My model
myGlobalObject = function(){
_myCart = function(){
return {
total : 0,
products : []
}
}
return {
init: function(strangeArgument){
console.log(strangeArgument) //this return undefined in jasmine test
},
myCart : _myCart,
addProduct : function(Products){
return _myCart()
},
.....
}
}
Der Test:
const c{
empty : {
total: {
beforeVAT: 0,
afterVAT: 0,
VAT: 0
},
products: []
}
}
beforeEach(() => {
this.instance = myGlobalObject();
this.instance.init();
this.productWithoutQuantity = Object.assign({}, _.productA);
delete this.productWithoutQuantity.quantity;
this.productWithQuantity = Object.assign({}, _.productB);
});
test(`the cart should be empty`,() => {
expect(this.instance.getCart()).toEqual(c.empty);
});
.... more tests
Und mein Haupt js:
var e = myGlobalObject();
var initialState = function(){
return {
total: {
beforeVAT: 0,
afterVAT: 0,
VAT: 0
},
products: []
}
}
e.init(initialState);
Was seine falsch?
natürlich ist es nicht definiert, wenn Sie anrufen 'this.instance.init(); 'ohne Argumente? – Bergi
Uh, benutze keine globalen Objekte ... Insbesondere lecke '_myCart' nicht. – Bergi
Hi Bergi, tks for answer, aber warum, wenn ich den Code innerhalb von main.js nehme und das Argument' strangeArgument' in meine module.js Datei lege funktioniert richtig? – Mauro