2016-03-17 5 views
0

отформатированных здесь хорошо ... пробовал в стеке, но не работает, что большой ... https://gist.github.com/js08/22654f6cd2f160aa2e0aПеребор массива с несколькими объектами

  • Я новичок в тестировании мокко ..
  • сейчас его работать с одиночный объект в массиве.
  • как заставить его работать с несколькими объектами в массиве.
  • я не уверен, как перебрать его
  • обеспечивая мой код ниже
  • отдельных объектов в массиве:

    shallowRenderer.render(<SportsList disclosures ={[ 'id': 'foo', 'text': 'car racing' ]} />); 
    
  • несколько объектов в массиве:


shallowRenderer.render(<SportsList disclosures ={[ {id: 100, text: 'car racing'}, {id: 10, text: 'hello vworld'}, {id: 100, text: 'car racing'} ]} />); 

import {expect} from 'chai'; 
import React from 'react'; 
import TestUtils from 'react-addons-test-utils'; 
import SportsList from '../../src/components/footer/disclosure-list.jsx'; 
import initializeJsDom from '../test-utils/dom.js'; 
import {getGridLayoutClasses} from 'sports-css-grids'; 


describe('shallow renderer tests for disclosure-list ', function() { 
    let shallowRenderer = TestUtils.createRenderer(); 


    it('should render correctly',() => { 

     shallowRenderer.render(<SportsList disclosures ={[ {id: 100, text: 'car racing'}, {id: 10, text: 'hello vworld'}, {id: 100, text: 'car racing'} ]} />); 
     //shallowRenderer.render(<SportsList disclosures ={[ 'id': 'foo', 'text': 'car racing' ]} />); 
     let sportsOutputElement = shallowRenderer.getRenderOutput(); 

     let sportsTitle = sportsOutputElement.props.children[0].key; 

     let text = sportsOutputElement.props.children[0].props.dangerouslySetInnerHTML.__html; 

     //result succeful for single value 
     expect(sportsTitle).equal('100'); 
     //result succeful for single value 
     expect(text).equal('car racing'); 
    }); 



}); 

json structure 
renderedElement - multiple arrays-- -- > 

{ 
    "type": "div", 
    "key": null, 
    "ref": null, 
    "props": { 
    "className": "pageFooter-disclosures", 
    "children": [{ 
     "type": "p", 
     "key": "100", 
     "ref": null, 
     "props": { 
     "dangerouslySetInnerHTML": { 
      "__html": "hello world" 
     } 
     }, 
     "_owner": null, 
     "_store": {} 
    }, { 
     "type": "p", 
     "key": "10", 
     "ref": null, 
     "props": { 
     "dangerouslySetInnerHTML": { 
      "__html": "hello vworld" 
     } 
     }, 
     "_owner": null, 
     "_store": {} 
    }, { 
     "type": "p", 
     "key": "100", 
     "ref": null, 
     "props": { 
     "dangerouslySetInnerHTML": { 
      "__html": "hello world" 
     } 
     }, 
     "_owner": null, 
     "_store": {} 
    }] 
    }, 
    "_owner": null, 
    "_store": {} 
}√ 
should render correctly(3 ms) 

ответ

0

С expect от chai вы можете использовать EQL, который будет проверять объекты для глубокого равенства

expect(sportsOutputElement.props.children).to.eql([ {id: 100, text: 'car racing'}, {id: 10, text: 'hello vworld'}, {id: 100, text: 'car racing'} ]); 
+0

спасибо за Ваше сообщение ... Вы можете обновить в моем коде ... его сбивает с толку –

+0

заменить четыре строки в ваш код, начинающийся с '' // результат successl для одиночного значения'' с линией выше – gabesoft

+0

спасибо за ваш ответ .... но я получаю сообщение об ошибке AssertionError: ожидается [Array (3)] для глубокого равенства [Array (3)] + Ожидаемый - фактический –