2016-12-16 6 views
0

カートのための私の還元レデューサーの単体テストを作成しようとしています。これは、アイテムは、アイテムのプロパティに追加され、減速機です:どのように減速機のユニットテストの作業を取得するには?

const initialState = { 
    items: [], 
    cartOpen: false, 
    newMonthlyCost: 0, 
    currentMonthlyCost: 0, 
    showNextButton: false, 
    orderConfirmed: false 
} 

const Cart = (state = initialState, action) => { 
    switch (action.type) { 
     case 'ADD_TO_CART': 
      return Object.assign({}, state, 
       { 
        items: [...state.items,action.data] 
       }); 

     default: 
      return state 
    } 
} 


export default Cart 

マイチャイユニットテストは、次のようになります。

import reducer from './../../foss-frontend/app/reducers/cart.js' 
import {expect} from 'chai'; 

describe('cart reducer',() => { 

    it('should handle ADD_TO_CART',() => { 
     expect(
      reducer([], { 
       type: 'ADD_TO_CART', 
       data: { 
        id: 12, price: 2332 
       } 
      }) 
     ).to.deep.equal({items: [{id: 124, price: 2332}]}) 
    }) 
}) 

は、なぜ私はこのエラーを取得していますし、どのようにこの問題を解決するために?

エラー:

 TypeError: Cannot convert undefined or null to object 
     at Function.from (native) 
     at _toConsumableArray (app\reducers\cart.js:7:182) 
+0

あなたのコードはOKに見える -

state.itemsが存在することを確認してください。私はバグがあなたが投稿しなかった部分にあると思う。あなたは、減速器とテストのすべてのコードを投稿できますか? –

+0

hi Artem –

+0

'.to.deep.equal({items:{id:124、price:2332}})'は '.to.deep.equal({items:[{id:124、price: 2332}]}) ' –

答えて

2

あなたがそうstate.items

reducer([], {...}) 

は未定義である状態として空の配列でtetstsで減速を呼び出します。次に解体しようとします

items: [...state.items,action.data] 

このエラーが発生します。このように、例えば

const Cart = (state = initialState, action) => { 
    switch (action.type) { 
     case 'ADD_TO_CART': 
      const { items=[] } = state; 
      return Object.assign({}, state, 
       { 
        items: [...items,action.data] 
       }); 

     default: 
      return state 
    } 
} 
+0

const {items = []} = state;正確に? –

+0

短い形式のconstアイテム= state.items; if(!items)items = []; https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment –

+0

大変ありがとうございます –

関連する問題