Странное поведение в аргументе javascript внутри глобального объекта

1

есть странное поведение в аргументе внутри объекта Global Javascript: мне нужно проверить свой код с помощью jasmine.js, но я не могу передать ожидаемое значение аргументу, всегда возвращающему неопределенное в тесте жасмина.

//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()
     },

    .....
   }

}

Тест:

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

И мои основные js:

var e = myGlobalObject();
var initialState = function (){
   return {
      total: {
        beforeVAT: 0,
        afterVAT: 0,
        VAT: 0
      },
     products: []
  }
}
e.init(initialState);

Что это за ошибка?

Теги:
jasmine

1 ответ

0

Хотя я не могу полностью понять намерение ОП здесь, следуя моему решению по этому вопросу

  • _myCart может быть локальной переменной, потому что она, похоже, не служит какой-либо большей цели, по крайней мере, из кода, предоставленного OP

  • Вызов instance.init может быть с пустой скобкой или с законным variable- зависит от того, что OP пытается достичь здесь.

  • Я включил как фрагмент кода main.js, так и testVariable.instance.init(); (на простой ноте его неопределенный, если он не определен в любом случае, как прокомментировал @Bergi)

  • Смотрите в действии здесь

myGlobalObject = function() {
  this._myCart = function() {
    return {
      total: 0,
      products: []
    }
  }

  return {
    init: function(strangeArgument) {
      console.log(strangeArgument)
    },
    myCart: this._myCart,
    addProduct: function(Products) {
      return this._myCart()
    }
  }

}

var e = myGlobalObject();
var initialState = function() {
  return {
    total: {
      beforeVAT: 0,
      afterVAT: 0,
      VAT: 0
    },
    products: []
  }
}
e.init(initialState);

describe('ajax test suite', function() {
  var testVariable = {}
  var c = {
    empty: {
      total: 0,
      products: []
    }
  }

  beforeEach(function() {
    testVariable.instance = myGlobalObject();
    testVariable.instance.init("hello");
    testVariable.instance.init();
  });

  it('the cart should be empty', function() {
    expect(testVariable.instance.myCart()).toEqual(c.empty);
  });
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню