0
Я читаю и практикую учебник: http://teropa.info/blog/2015/09/10/full-stack-redux-tutorial.html Но я не мог пройти тесты на редуктор. Затем я сделал новый тест, чтобы узнать причину.Путаница после установки свойства карты
Вот что test.js (мокко с Chai):
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" ] }
Это действительно сбивает с толку. Как заставить его работать?
Я попробовал это только сейчас, как вы сказали, со вторым «ожидать» заявление (fromJS). Оно работает. Но почему? Означает ли это, что учебник, упомянутый выше, неверен? – Slimpothive
Когда вы устанавливаете свои записи следующим образом: state.set («entries», action.entries), action.entries - это простой массив, не являющийся неизменным списком. С другой стороны, вы не можете сравнить его с JS ({ записей: ['Trainspotting'] }). Он создаст экземпляр списка экземпляров. Это сила от JS() –
Это имеет смысл. Большое спасибо! – Slimpothive