2016-06-02 1 views
0

私はチュートリアルを読んで練習しています:http://teropa.info/blog/2015/09/10/full-stack-redux-tutorial.html しかし、私は減速テストに合格できませんでした。それから、私はその理由を見つけるために新しいテストをしました。ここでマップのプロパティを設定した後の混乱

はtest.js(チャイとモカ)です:

import {expect} from 'chai'; 
import {List, Map, fromJS} from 'immutable'; 

describe('set',() => { 
    it('sets map\'s property',() => { 
    const state = Map(); 
    const action = {type: 'SET_ENTRIES', entries: ['Trainspotting']}; 
    const nextState = state.set('entries', action.entries); 

    /* 
    expect(nextState).to.equal(Map({ 
     entries: ['Trainspotting'] 
    })); 
    */ 
    expect(nextState).to.equal(fromJS({ 
     entries: ['Trainspotting'] 
    })); 
    }); 
}); 

どちらの地図やfromJSを使用する "マップ" を選択した場合、テストは

を渡しません、それは示しています

AssertionError: expected 'Map { "entries": Trainspotting }' to equal 'Map { "entries": Trainspotting }' 
    + expected - actual 

"fromJS" を選択した場合、それは示しています

AssertionError: expected 'Map { "entries": Trainspotting }' to equal 'Map { "entries": List [ "Trainspotting" ] }' 
    + expected - actual 

    -Map { "entries": Trainspotting } 
    +Map { "entries": List [ "Trainspotting" ] } 

それは本当に混乱しています。それを動作させるには?

答えて

0

あなたは第二の「期待する」声明(fromJS)と言ったように、私はちょうど今それを試してみました

const nextState = state.set('entries', List(action.entries)); 
+0

を試してみました。できます。しかし、なぜ?上記のチュートリアルが間違っているということですか? – Slimpothive

+0

entry.set( 'entries'、action.entries)のようにエントリを設定すると、action.entriesは単純な配列であり、変更不可能なリストではありません。反対側では、それをfromJSと比較することはできません({ entries:['Trainspotting'] })。 エントリのListインスタンスを作成します。それはfromJSの力です。 –

+0

それは理にかなっています。どうもありがとう! – Slimpothive

関連する問題