Доступ к свойству выполнения функции (например, doSomething (). Cool) - PullRequest
0 голосов
/ 31 мая 2018

Как должен быть написан код, чтобы тест мог получить доступ к свойству выполнения функции здесь:

_instance.addProducts(_product).products

Тест

describe(`ONE product added`, () => {
  const _product = {
    name: 'product1',
    price: 1.50,
    quantity: 1
  };
  let _instance
  let _cart

  beforeEach(() => {
    _instance = window[MODULE_NAME]();
    _cart = _instance.addProducts(_product);
  });

  test(`cart's products`, () => {
    expect(_cart.products).toEqual([_product]);
  });
})

Код

(function() {
  var MODULE_NAME = 'shoppingcartModel',
      _Cart = {
        products: [],
        total: {
          beforeVAT: 0,
          afterVAT: 0,
          VAT: 0
        }
      };

  window[MODULE_NAME] = function() {

    return {

      addProducts: function(newOrExistingProducts) {
        return _Cart.products.push(newOrExistingProducts);
      }

    };
  };
})()

Тест написан отлично и не может быть изменен.Что это за волшебство?:)

Я попытался изменить addProducts переменную к переменной и добавить к ней свойство products, но это не так ...

1 Ответ

0 голосов
/ 31 мая 2018

возвращает _Cart из вашего addProducts метода и получает свойство products из возвращенного _Cart объекта

addProducts: function(newOrExistingProducts) {
    _Cart.products.push(newOrExistingProducts);
    return _Cart;
}

Когда вы пишете _instance.addProducts(_product).products, вы не пытаетесь получить продукты из _instance.addProductsно из возвращаемого значения.

Чтобы получить продукты из _instance.addProducts, вы должны написать _instance.addProducts.products вместо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...