Redux Jest не получает ожидаемого значения - PullRequest
0 голосов
/ 23 ноября 2018

Я получаю

 Expected value to equal:

  [{"id": 1, "text": "Run the tests"}, {"id": 0, "text": "Use Redux"}]

Received:
  [{"id": 0, "text": "Use Redux"}, {"id": 1, "text": "Run the tests"}]

Я не совсем понимаю, как пройти этот тестовый редуктор.Я ссылаюсь на различные проекты GitHub, чтобы лучше понять тестирование.Я не уверен, что я могу сделать, чтобы пройти тест.Вот что у меня есть.

Я проверяю, используя шутку.

actions / actions.js

let nextTodoId = 0;

export const addPost = text => ({
  type: 'ADD_POST',
  id: nextTodoId++,
  text
})

редукторы / myPosts

    const initialState = [
      {
        text: 'Use Redux',
        id: 0
      }
    ]



    const myPosts = (state = initialState, action) => {

      switch(action.type){
        case 'ADD_POST':
          const post = {
            id:state.reduce((maxId, post) => Math.max(post.id, maxId), -1) + 1,
            text:action.text,

          }
          return [...state, post];


        default:
          return state
      }

    }

    export default myPosts

тесты / redurs.js

import { addPost } from '../actions/actions';
import myPosts from '../reducers/myPosts';
import uuid from 'uuid';
describe('myPosts myPosts', () => {
  it('should return the initial state', () => {
    expect(myPosts(undefined, {})).toEqual([
      {
        text: 'Use Redux',
        id: 0
      }
    ])
  })
  it('should handle ADD_POST', () => {
    expect(
      myPosts([], {
        type: 'ADD_POST',
        text: 'Run the tests'
      })
    ).toEqual([
      {
        text: 'Run the tests',
        id: 0
      }
    ])
    expect(
      myPosts(
        [
          {
            text: 'Use Redux',
            id: 0
          }
        ],
        {
          type: 'ADD_POST',
          text: 'Run the tests',
          id:0
        }
      )
    ).toEqual([
      {
        text: 'Run the tests',
        id: 1
      },
      {
        text: 'Use Redux',
        id: 0
      }
    ])
  })
})

1 Ответ

0 голосов
/ 23 ноября 2018

Проблема в том, что вы расширяете предыдущее состояние перед добавлением нового сообщения ...

измените ваш редуктор на следующее:

return [post, ...state];

То, как вы его написали... новый пост помещается в конец массива состояний.Если вы хотите, чтобы новое сообщение появилось первым, это решит проблему.

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