代码之家  ›  专栏  ›  技术社区  ›  volna

函数执行的访问属性(如dosomething().cool)

  •  0
  • volna  · 技术社区  · 6 年前

    如何编写代码,以便测试可以在此处访问函数执行的属性:

    _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 回复  |  直到 6 年前
        1
  •  2
  •   AvcS    6 年前

    返回 _Cart 从你的 addProducts 方法并从返回的 推车 对象

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

    当你写作时 _instance.addProducts(_product).products 你不是想从 _instance.addProducts 但从它的返回值来看。

    _实例.addProducts 你应该写信 _instance.addProducts.products 相反