2017-01-03 9 views
0

Так что я думал, что создал простой тест, чтобы подтвердить мое тестирование мокки/chai, настроенное для моих редукторов редукта, но этот первоначальный тест терпит неудачу по причинам, которые я не могу различить. Все настроено согласно babel docs. Нет связанных с es6 ошибок.Почему тест Mocha на снижение редуктора сокращается?

Файловая структура

client 
|-reducers 
| |-auth_reducer.js 
| 
test 
|-reducers 
| |-auth.test.js 

Test Script
mocha --compilers js:babel-register --require babel-polyfill --recursive

Auth Reducer

const AUTH_USER = 'AUTH_USER'; 
const INITIAL_STATE = { error: '', message: '', content: '', authenticated: false, user: null }; 

export default function (state = INITIAL_STATE, action) { 
    switch (action.type) { 
    case AUTH_USER: 
     return { ...state, error: '', message: '', authenticated: true }; 
    } 
    return state; 
} 

Auth Test

import { expect } from 'chai'; 

import authReducer from '../../client/reducers/auth_reducer'; 

describe('auth_reducer',() => { 

    it('handles AUTH_USER',() => { 
    const initialState = { 
     error: '', 
     message: '', 
     content: '', 
     authenticated: false, 
     user: null 
    }; 
    const action = { 
     type: 'AUTH_USER', 
    }; 
    const nextState = authReducer(initialState, action); 

    expect(nextState).to.equal({ 
     error: '', 
     message: '', 
     content: '', 
     authenticated: true, 
     user: null 
    }); 
    }); 
}); 

Ошибка

auth_reducer 
    1) handles AUTH_USER 

    0 passing (38ms) 
    1 failing 

    1) auth_reducer handles AUTH_USER: 

     AssertionError: expected { Object (error, message, ...) } to equal { Object (error, message, ...) } 
     + expected - actual 

     at Context.<anonymous> (test/reducers/auth.test.js:20:26) 

npm ERR! Darwin 15.6.0 
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "test" 
npm ERR! node v6.7.0 
npm ERR! npm v3.10.9 
npm ERR! code ELIFECYCLE 
npm ERR! [email protected] test: `mocha --compilers js:babel-register --require babel-polyfill --recursive` 
npm ERR! Exit status 1 
npm ERR! 
npm ERR! Failed at the [email protected] test script 'mocha --compilers js:babel-register --require babel-polyfill --recursive'. 

ответ

2

Использование deep.equal вместо equal:

expect(nextState).to.deep.equal({ 
    error: '', 
    message: '', 
    content: '', 
    authenticated: true, 
    user: null 
}); 

Когда вы сравниваете объекты неглубоко, ссылаться на объекты сравнивается. При использовании глубокого сравнения сравниваются свойства и значения.

Простой пример:

const a = { val1: 1, val2: 2 }; 
 
const b = { val1: 1, val2: 2 }; 
 

 
console.log('equality ', a === b); 
 

 
console.log('deep equality ', a.val1 === b.val1 && a.val2 === b.val2);

+0

Святой бог спасибо. Я пойду google почему. – Kwhitejr

+0

Я добавил «почему» с простым примером. –

 Смежные вопросы

  • Нет связанных вопросов^_^