2017-02-22 1 views
0

Может ли кто-нибудь объяснить следующий тест в jest для меня?Фермент игнорирует определенные значения prop при тестировании. React Component

StateIdText.jsx

import React, { Component, PropTypes } from 'react'; 

class StateIdTxt extends Component { 
    propTypes: { 
     x: PropTypes.number.isRequired, 
     y: PropTypes.number.isRequired, 
     stateId: PropTypes.number.isRequired 
    } 

    render() { 
     const {x, y, stateId} = this.props; 
     return (
       <text x={x} y={y} 
         textAnchor="end" 
         dominantBaseline="text-before-edge" 
         fontSize=".7em" fill="blue"> 
        {stateId} 
       </text> 
     ); 
    } 
} 

export default StateIdTxt; 

StateIdTxt.test.js

import React from 'react'; 
import {mount, render, shallow} from 'enzyme'; 

import StateIdTxt from './StateCoordTxt.jsx'; 

it('shallow <StateIdTxt />',() => { 
    const wrapper = shallow(<StateIdTxt x={1.5} y={2.1} stateId={99} />); 
    expect(wrapper.prop('x')).toEqual(1.5); 
    expect(wrapper.prop('y')).toEqual(2.1); 
    expect(wrapper.prop('stateId')).toBeUndefined(); 

    expect(wrapper.prop('textAnchor')).toBe('start'); // how come not end? 
    expect(wrapper.prop('dominantBaseline')).toBe('text-before-edge'); 
    expect(wrapper.prop('fontSize')).toBe('.7em'); 
    expect(wrapper.prop('fill')).toBe('blue'); 
}); 

Почему wrapper.prop('textAnchor') ожидать 'старт', который он проходит, а 'конец'? Я могу изменить «конец» на другой случайный текст, и тест все же проходит.

ответ

0

По именам файлов вы упомянули в вашем посте, я думаю, что у вас есть опечатка в импорте в StateIdTxt.test.js:

import StateIdTxt from './StateCoordTxt.jsx'; 

Похоже, она должна быть

import StateIdTxt from './StateIdTxt.jsx'; 
+0

Тупой ошибки .... Спасибо, что указали это. – zyxue

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